問題タブ [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.

0 投票する
2 に答える
267 参照

java - 円形配列キューでリア値が正しく機能しない

追加するためのこのコードがあります:

しかし、その値を取得したい場合r、実際よりも 1 つ多くの値が得られます。また、ある配列から別の配列に値をコピーすると、1 つの値をスキップしているという値があります。私はすべてが の値に関係していることを知っており、何r = (r+1)%(q.length);時間も取り組んできましたが、それを理解することはできません。q[r] に値を割り当てた後、最初の値だけであっても、r の値を取得しようとすると、式によって増加するため 1 になりますが、わかりません循環キュー式を台無しにすることなく、別の方法でそれを記述する方法。どんな助けでも大歓迎です。ありがとう!

0 投票する
0 に答える
349 参照

.net - C# で Disruptor ポートを使用して成功した人はいますか?

Disruptorは Java の世界で、特に責任者であるLMAXによって成功を収めていることが証明されています。トレーディング シナリオまたは他のドメインで .NET ポートを使用して (アルファ、ベータ、または製品) 成功した人はいますか? もしそうなら、それはどのように成功し、なぜその移植を選択したのですか?

0 投票する
2 に答える
1054 参照

c - 循環バッファ対。フリー スタックをロックしてフリー リストを実装する

趣味でマルチスレッド コードを書いていると、次のような状況に陥りました。

スレッドは、メモリ プールから単一のリソース ユニットを要求し、それを処理して、このデータへのポインターを別のスレッドに送信し、循環バッファーを使用してさらに操作を行います (1R / 1W の場合)。

後者は、受信したデータの処理が完了するたびに前者のスレッドに通知する必要があるため、メモリを再利用できます。

この「フリーリスト」を別の循環バッファーとして実装し、空きリソースのアドレスを保持するか、ロックフリースタックの方法 (x86-64 で DCAS を実装する) を選択する方がパフォーマンス的に優れているかどうか疑問に思います。

一般的に言えば、2 つの異なるアプローチの長所と短所は何でしょうか?

0 投票する
1 に答える
565 参照

circular-buffer - ハードウェアの循環(リングまたはサイクリック)バッファ:マイクロプロセッサでの使用の可能性?

循環バッファは、効率的なビデオまたはサウンドデータ処理のためにTIによって作成されたDSPのような有用な部分であることが知られています。

IntelやAMD製のCPUのような一般的なタイプのマイクロプロセッサでこれらのバッファを使用する可能性はありますか?

0 投票する
2 に答える
3378 参照

c++ - イテレータ、 end() の呼び出しの結果の値は、データがcircular_bufferに追加されると変化します

今日、boost::circularバッファのイテレータが、マルチスレッド環境で期待どおりに動作していないことを発見しました。(公平を期すために、シングルスレッドプログラムでも私が考えるよりも動作が異なります)。

特定のデータ シーケンスをループするために使用するイテレータを呼び出してbuffer.begin()表す場合。buffer.end()にさらにデータが追加されると、終了イテレータの値が変化しますcircular_bufferend()データが変更された後に別の呼び出しを行った場合、明らかに異なる結果が得られると予想されます。しかし、紛らわしいのは、既に変更した iterator オブジェクトの値です。

circle_buffer 内の設定された範囲のデータを操作できるイテレータを作成し、範囲の操作中に追加のデータがバッファに追加されても値が変更されないようにする方法はありますか?

そうでない場合、適用される可能性のある推奨される「非反復子」パターン、またはこれを許可する別のコンテナー クラスはありますか?


ronag へのより詳細な応答の更新 プロデューサー コンシューマー タイプ モデルを探しています。ブースト ドキュメントに示されている制限付きバッファーの例は、必要なものに近いものです。ただし、次の 2 つの例外があります。

  1. バッファから一度に複数のデータ要素を読み取り、それらを検査できる必要がありますが、これは簡単ではないかもしれません。次に、バッファから削除するアイテムの数を選択します。

    偽の例: 文字列から hello と world という 2 つの単語を処理しようとしています。

    1 を読み取り、バッファに hel が含まれています。バッファから文字を削除しません。-more 読み取り 2 を生成、バッファには hellowo が含まれています。「hello」が 5 文字を削除していることがわかりました。バッファには wo が含まれています。さらに読み取り 3 を生成します。バッファには world が含まれています。

  2. バッファーがいっぱいでない限り、読み取り時にプロデューサー スレッドをブロックする必要はありません。

0 投票する
1 に答える
2071 参照

c - Cの2Dリングバッファ

タイプAの値を格納するためにリングサイズが5の単純なリングバッファをコーディングしました。次に、このバッファを拡張してタイプBの値(これも5つの値)を格納する必要があります。

概要を説明するために、読み取りインデックスと書き込みインデックスの変数をグローバル揮発性として定義し、リングバッファでの読み取りと書き込みの2つの関数を定義しました。

私はする必要があるだけです:ring data = int read_ring_data()そしてwrite_ring_data(int pass_new_data)

揮発性のグローバル変数は、読み取りと書き込みの場所を制御するのに役立ちます。

私の質問は、これらの読み取りおよび書き込み関数を再利用して、単に再ディメンション化することで2Dバッファーに拡張する方法はありますか?どうすれば実装できますか?

0 投票する
1 に答える
99 参照

ios - ユーザーが最後の画像に到達したときに、その後の最初の画像を表示できるようにしたいと思います。

私はUIScrollViewそれに異なる画像(約30)を持っています。ユーザーが最後の画像に到達したときに、その後の最初の画像を表示できるようにしたいと思います。そして、最初の画像で同じ機能を実装したいと思います(最後の画像に移動します)。ユーザーが別のループを作成していることに気付かないように、画像をスムーズにループさせたいと思います。

0 投票する
0 に答える
555 参照

boost - boost::interprocess および circle_buffer 、C++

私の英語は概算です。ご不便をおかけして申し訳ありません。

私は c++ 開発者で、boost::interprocess プログラムで boost::circular_buffer を使用したいと考えています。

次のコードはコンパイルされますが、起動時にフリーズします。

ご回答ありがとうございます。

0 投票する
4 に答える
6199 参照

python - numpy/ctypesを使用したリングバッファ

tcpを介して[EEG]データを受信し、それをリングバッファに書き込むクライアントを開発しています。バッファをctypesまたはnumpy配列として持つと、そのようなバッファの任意の場所にnumpyの「ビュー」を作成し、コピー操作なしでデータを読み取り/書き込み/処理できるため、非常に便利だと思いました。それとも一般的に悪い考えですか?

ただし、この方法で固定サイズの循環バッファを実装する方法がわかりません。メモリ内で隣接するバッファオブジェクトを作成したとします。バッファの終わりに達したときにデータを書き込むための最良の方法は何ですか?

考えられる1つの方法は、書き込みポインタがバッファアレイの最後に到達したときに、最初から(すでに古い)バイトの上書きを開始することです。ただし、境界の近くでは、一部のチャンク(処理用)のnumpyビューを作成できません(または作成できますか?)。これは、一部のチャンクがまだバッファー配列の最後にあり、別のチャンクがすでにあるためです。その始まり。私はそのような円形のスライスを作成することは不可能であることを読みました。これを解決する方法は?

UPD:回答ありがとうございます。誰かが同じ問題に直面した場合に備えて、これが私が持っている最終的なコードです

0 投票する
1 に答える
4806 参照

android - Android の循環バッファへのビデオ録画

SDカードの循環バッファに連続ビデオをキャプチャして、ユーザーがイベントが発生した後にイベントをキャプチャできるようにするための最良の方法(もしあれば...)を探しています。

標準のビデオ録画 API を使用すると、ファイルに直接書き込むことができ、制限 (ユーザーが設定した、または SD カードの容量) に達すると、録画を停止して再開する必要があります。これにより、記録が実行されていない最大 2 秒間のウィンドウが作成されます。これは、DailyRoads Voyager のようないくつかの既存のアプリが既に行っていることです。重要なものを見逃す可能性を最小限に抑えるために、分割時間を 10 分などの長い時間に設定できますが、この時間間隔の終わり近くにイベントが発生した場合、最初の 9 分間を何も保存しないため、スペースが無駄になります。

したがって、現時点での私の考えは次のとおりです。バッファーとして機能する大きなファイルを用意します。フレームをキャプチャして自分でファイルに保存し、最後に折り返すために見つけたコードを使用します。ユーザーが一部を保持したい場合は、バッファー内の先頭と末尾へのポインターでマークします。保持対象としてマークされた領域をスキップして、以前と同様に記録を続行できます。

録音が停止した後、またはバックグラウンド スレッドで (電話/カードの速度に応じて) その間に、マークされた領域を別のファイルにコピーし、上書き保護を削除します。

上記の詳細を気にしない場合の主な質問: Android SDK で個々のフレームをビデオ ファイルに変換する方法が見つからないようです。出来ますか?そうでない場合、これを行うことができるネイティブコードのライブラリはありますか?

非圧縮フレームの大きなバッファについてはあまり気にしませんが、エクスポートされたビデオは Android に適した形式で圧縮する必要があります。しかし、バッファを圧縮する方法があれば、それについて聞きたいです。

ありがとうございました。