Cでは、値を生成するスレッドがいくつかあり、それら を消費するスレッドが1つあります。したがって、ウィキペディアの実装と同様の方法で実装された固定サイズのバッファーと、スレッドセーフな方法でそれにアクセスするメソッドが必要です。long
一般的なレベルでは、次のことが当てはまります。
- フルバッファに追加するときは、スレッドをブロックする必要があります(古い値を上書きしないでください)。
- コンシューマースレッドは、バッファーがいっぱいになるまでブロックする必要があります。そのジョブには一定のコストが高く、可能な限り多くの作業を行う必要があります。(これはダブルバッファーソリューションを必要としますか?)
できればライブラリからの、試行錯誤された実装を使用したいと思います。何か案は?
動機と説明:
ヒープオブジェクトにタグとして保持されているグローバル参照の削除を処理するJNIコードを書いています。
ObjectFree
JVMTIイベントが発生すると、を使用して解放する必要があるグローバル参照を表すタグを取得しlong
ますDeleteGlobalRef
。このために、私はJNIEnv
参照が必要です-そしてそれを取得することは本当に費用がかかるので、私はリクエストをバッファリングして一度にできるだけ多くを削除したいと思います。
イベントを受信するスレッドが多数ある可能性がありObjectFree
、参照の削除を行うスレッド(私のもの)が1つあります。