私は、あるスレッドが別のスレッドより多くの仕事をしているときに飢えに苦しむプログラムに取り組んでいます。クリティカルセクションは、リエントラントQMutexによって保護されていますが、これは公正ではありません。Fair Reentrant Lock C++
Javaでは、ロックのフェアネスパラメータを指定できます。 C++(またはブーストライブラリ)は、公正なリエントラントロックを利用できますか?好ましくはC++まで11。
以前はいくつかの研究を行っていましたが、boostにshared_lockがありますが、読み書きロックは必要ありません。それぞれのスレッドがクリティカルセクションに入る機会が等しいことを保証するロックだけです。
はどうもありがとうございました。
'STDと'のstd :: mutex' :: lock_guardがあります 'C++ 11が、それらが公正であることを保証していないからです。私は、MSVC CRTの実装では待ち行列を使用していると思います。 –
Cameron
はい..しかし、私は公正なロックが必要です... – Veaceslav
一般にC++では利用できない公平パラメータを使用するのではなく、作業ディスパッチを優先的にキューイングして状況を詳細に制御できることがあります飢餓を避けるために「重い」操作を抑制する。それは明らかにより多くのコーディングですが、長期的にはよりよい結果をもたらすかもしれません。 –