C++ 11にスレッドが飢餓状態になるのを防ぐロックポリシーがあるかどうかは不思議です。C++ 11でスレッドの飢餓を防ぐ方法
私は1つのミューテックスのために競合しているスレッドの束を持っています。今、私の問題は、クリティカルセクションを離れるスレッドがすぐに同じミューテックスで競合し、ほとんどの時間が勝つということです。したがって、mutexで待機している他のスレッドは飢えています。
重要なセクションを残してスレッドを最小限の時間スリープさせて、他のスレッドにミューテックスをロックする機会を与えたいとは思わない。
ミューテックスで待機しているスレッドに対して公正なロックを可能にするパラメータが必要であると思っていましたが、適切な解決策を見つけることができませんでした。
スレッドの実行順序を再スケジュールすると思われるstd :: this_thread :: yield()関数が見つかりましたが、スケジューラスレッドのヒントのみであり、スレッドを再スケジュールするかどうかはスケジューラスレッドの実装に依存します。
C++ 11の同じミューテックスで待機しているスレッドに適切なロックポリシーを与える方法はありますか? 通常の戦略は何ですか?
おかげ
http://stackoverflow.com/questions/11666610/how-to-give-priority-to-privileged-thread-in-mutex-locking リンク!! –
これはスレッドの飢餓の問題ではなく、人々がそれを見て助けてくれるようにするコードを投稿することができます。 – dirvine
一般的に、1つのミューテックスのために競合する多数のスレッドを持っているべきではありません。コードが1つのスレッドだけが一度に作業できるシリアルの場合は、正当な理由はありますが、すべて同じ正当な理由ではなく、異なる回答をすることもできます。 – Yakk