私にはプロデューサーとコンシューマーがいます。プロデューサーは特定の共有メモリ領域に固定サイズのアイテムを書き込み、コンシューマーはそれらを取得します。
プロデューサーは、ランダムに、コンシューマーよりも著しく遅いまたは速い場合があります。
私たちが欲しいのはそれです
プロデューサーがコンシューマーよりも高速に実行されている場合、循環バッファーがいっぱいになると、最も古いフレーム(もちろん、コンシューマーが消費しているフレーム以外)に書き込みを続けます。この点を強調します。プロデューサーとコンシューマーはで同期する必要があります。それらは無関係なプロセスであるため、ソリューション)。
代わりに、コンシューマーがプロデューサーよりも速い場合は、新しいフレームを待機し、そこにあるときにそれを消費する必要があります。
循環バッファーを使用したプロデューサー/コンシューマーの実装を見つけましたが、最初のリクエストを尊重しなかったものだけです(つまり、循環バッファーがいっぱいの場合、コンシューマーが終了するのを待ちますが、必要なのは最も古いフレームを上書きすることです)。
私は自分自身の(バグが発生しやすい)ソリューションをロールバックしたくないのですが、事前に缶詰にされ、テストされたソリューションを使用します。誰かが私に良いCの実装を教えてもらえますか?(C ++も問題ありません)。
どうもありがとう。