問題タブ [circular-buffer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iteration - 条件なしで循環バッファを逆方向に反復するにはどうすればよいですか?
剰余演算子を使用すると、条件を使用せずに循環バッファーを順方向に反復するのは簡単です。
iterator = (iterator + 1) % buffer_size;
私は一生の間、逆の操作を理解することができず、逆方向に繰り返します。
c++ - C / C ++で単純な整数循環バッファをコーディングするにはどうすればよいですか?
循環バッファを実装するためのテンプレートと複雑なデータ構造がたくさんあります。
5つの数値の単純な整数循環バッファをコーディングするにはどうすればよいですか?
私はCで最も簡単だと思いますか?
ありがとう。
file - 循環バッファ方式でファイルから読み書きする
ファイルを循環バッファとして動作させる必要があります。あるスレッドから、データを書き込む必要があります。別のスレッドから、ファイルから読み取った。ただし、ファイルのサイズは固定です。
何か案が?
c++ - スレッド間でのデータ配列の共有-C++
すでに回答されている同様の質問があることは知っていますが、私が知りたいことを正確に示していないので、この質問をしています。これはスレッド間の同期についてです。私のプロジェクトのアイデアは、データ取得カードからデータを取得し、データ取得中にデータをプロットして分析することです。これまでのところ、あるスレッドでデータを取得するためのクラスと、別のスレッドでプロットするためのクラスしかありません。データ取得クラスはデータをグローバル循環バッファに格納し、プロットクラスはグローバルバッファからデータをコピーし、プロットのためのいくつかのプロセス(データポイントの削減など)を実行します。これは、(単一の)生産者-(単一の)消費者の問題と呼ばれるものだと思います。
それでは、データを分析する別のスレッドに別のクラスを紹介したいと思います。次に、1つのプロデューサーと2つのコンシューマーがあります。以下の条件を課したいと思います。
- 2つのリーダーは同じデータセットを共有します。つまり、作成された各アイテムは、一方だけではなく、両方のリーダーが使用する必要があります。
- バッファがいっぱいになると、データ取得クラスがグローバルバッファを上書きします。データ取得クラスによるバッファの上書きによってリーダーがデータを失った場合、これを検出し、理想的にはログに保持する必要があります(たとえば、データのどの部分がリードイヤーによって失われたか)。 )。
- 分析クラスの計算は集中的になる可能性があります。このために、分析クラスでより大きなデータバッファーが必要になる場合があります。
私が最初の部分(単一のプロデューサーと単一の消費者)を扱った方法は、2番目の部分(単一の生産者と2つの消費者)の場合に単純な方法で拡張されていないようです。どうすればいいのかしら。GUIにQtを使用しているので、スレッドにはQtを使用したC++を使用しています。ただし、解決策は必ずしもQtである必要はありません。ただし、可能であれば、サンプルコードまたは擬似コードをいただければ幸いです。私はここで私の問題に似たスレッドを見つけました)。boost::interprocessを使用することをお勧めします。ただし、これまでBoostライブラリを使用したことがなく、boost :: interprocessに関するドキュメントを読んだことがあるので、自分自身を理解するにはあまりにも複雑に見えます。
どうもありがとう!
大輔
emacs - emacsでリングと呼ばれるものは何ですか?
Windows スタイルの自明なコピー/カット/ペースト コマンドとは異なり、emacs のリングの概念を理解できませんでした。
私は emacs でプログラミングすることはめったにないので、リング機能の価値を理解できませんでした。emacsでリングと呼ばれるものとその使い方を教えてもらえますか?
c++ - unsigned を法とする配列ラップアラウンド
最大値までの整数に対して、遅延フィボナッチ疑似乱数ジェネレーターを実装しようとしています。値の配列を維持します
次の関数を使用して次の値を返します
実際にvalues
は、常に満杯の単純なリング バッファにする必要があります。減算とモジュロは、インデックスを配列の末尾にラップする必要があります。SIZE
は常に少なくとも 55 である必要がありますが、モジュロを高速化するために 64 に切り上げたいと考えています。
しかしどうやら、モジュロ計算が間違っていて、修正方法がわかりません。インデックスの種類を に変更しint
ても改善されません。
(PS .: はい、static
data は悪いスタイルですが、C と C++ の両方のプログラマーが読めるようにしたいのです。これは両方の言語に関係するからです。)
python - 効率的な循環バッファ?
Pythonで効率的な循環バッファーを作成したい(バッファー内の整数値の平均を取ることを目的としています)。
これは、リストを使用して値を収集する効率的な方法ですか?
何がより効率的でしょうか (そしてその理由)?
c++ - 最も古いデータを上書きする C /C++ ロックフリー (またはノンブロッキング) リングバッファ?
バッファ内の最も古いデータを上書きするシングルコンシューマ/シングルコンシューマ用のリングバッファを作成するロックフリーまたは非ブロッキングの方法を作成する方法を見つけようとしています。バッファがいっぱいの場合に「falseを返す」ときに機能するロックフリーアルゴリズムをたくさん読みました。つまり、追加しないでください。しかし、最も古いデータを上書きする必要があるときにそれを行う方法について説明している疑似コードさえ見つかりません。
私は GCC 4.1.2 を使用しており (制限があり、バージョンをアップグレードできません...)、Boost ライブラリがあり、過去に独自の Atomic< T > 変数型を作成しました。今後の仕様(完全ではありませんが、スレッドセーフであり、必要なことを行います)。
考えてみると、これらのアトミックを使用すれば問題は解決するはずだと思いました。私が考えていたことに関する大まかな疑似コード:
私が知る限り、ここではデッドロックの状況は発生しないので、安全です (上記の実装が疑似コードレベルでも間違っている場合は、建設的な批判が常に歓迎されます)。ただし、私が見つけることができる大きな競合状態は次のとおりです。
バッファがいっぱいであると仮定しましょう。つまり、writeIndex +1 = readIndex; (1) は、consume が呼び出されたときに発生します。そして true (4) は false であるため、バッファから読み取るように移動します (5) が発生し、readIndex が 1 つ進められます (したがって、実際には、バッファ内にスペースがあり (2) が発生し、readIndex が AGAIN を進めます。したがって、価値を失う。
基本的に、ライターがリーダーを変更しなければならず、競合状態が発生するという古典的な問題です。アクセスするたびにリスト全体を実際にブロックしない限り、これを防ぐ方法は考えられません。私は何が欠けていますか??
qt - QtおよびBoost循環バッファ
プロジェクトにブースト循環バッファを含めようとしています。macportsを使用してコンピューターにboostをインストールしました。ブーストライブラリにどのライブラリを含めるかはわかりませんが、ヘッダーファイルを含めました。以下は私のcmakeファイルです。
c - 遅延線の c の円形配列
cで遅延ラインをプログラミングするためのリソースをオンラインで見つけようとしています。
ここでこれを実装してみました
https://ccrma.stanford.edu/~jos/doppler/Variable_Delay_Line_Software.html .
これに関する問題は、それが言うところです
wptr は整数ではなくポインタであるため、コンパイラはエラーをスローします。
誰かがコンパイラに優しい例の例を教えてもらえますか?