2012-03-20 8 views
1

私はmutexが各スレッド(LinuxのPOSIXスレッド)によって平均的に入力されるようにする方法を見つけようとしました。平均的に各スレッドが共有するmutexを保証する方法

私のプログラムでは、グローバルキューがあり、独自のmutexロックを持っています。いくつかの書き込みスレッドは、要素を一度に1つずつキューに書き込み、1つの読み取りスレッドは毎回キューから要素のグループを読み込みます。その結果、キューのサイズは常に制限よりも大きくなります。

私の質問はどのようにmutexがすべてのスレッドによって平均的にアクセスされるべきかを確認することです。どんなコメントもありがとう!

+0

あなたはリソースの飢餓について話していますか? http://en.wikipedia.org/wiki/Resource_starvation – Volte

答えて

0

私は、2つのライタースレッド、1つのリーダースレッド、およびあるバッファ制限を持つ共通のバッファリングキューを想定しています。

これを行う方法はいくつかあります。

  1. より高い優先度のライタースレッドを作成します。したがって、ロックがライタースレッドのいずれかによって解放されるたびに、それは、それが第2のライタースレッドと共にスケジューラーキューで待機している場合に、リーダースレッドによって直ちに獲得される。

  2. グローバル同期フラグを使用してキュー内のタスクを実行し、特定の読み取りおよび書き込み条件のしきい値を与えます(たとえば、キュ​​ーカウントが10の場合、最大カウントが達成された場合、特定の回数だけフラグの助けを借りてリーダースレッドをスケジュールすることができ、フラグが正常に動作するように解放する)。これは、制限を超えてキューが大きくなるのを制限するのに役立ちます。

両方の点を理解していただきたいと考えています。

関連する問題