バッファフルシミュレーションを実行しようとしています。バッファーがいっぱいになったら、それをさらに処理するためにコピーする必要があります。コピーは相互に排他的な操作ですが、それ以上の処理はできません。 私の動作フローはこのようなもので、条件が真であれば何かを書こうとするたびにバッファの完全な状態をチェックします。現在のバッファをコピーします。&それを処理します。&新しいメッセージを書きます。スレッドをQUEUEする方法はありますか?
私は複数の書き込みスレッド&を持っていますが、メッセージは順番にしか書き込まれません。
bwrite(data)
{
lock(m1);
//invoke copy thread
lock(m1);
// Do write message
}
copy(data)
{
//copy the data
unlock(m1);
//Do further processing
}
に従ってください問題は、コピーが完了したらthread01
コピーが最初に私はいけない場合thread01
、& thread02
が&がある場合、メッセージは例えばのような任意の順序で書かれているということであるとして簡単なの私の機能がありますthread01
が最後のメッセージを書き込む前にthread02
がコピーを開始する可能性がありますので、メッセージが失われる可能性があります。
私は次の実行シーケンスを保証できるように、基本的には待ち行列に入ってくるスレッドを入れる方法が必要です。
私はmutexesを使用しています、 1つのコピースレッド。私は時々それを伝えます。 – vindyz