共有メモリへの書き込みを待っているコードがあります。 誰も書き込みをしない場合、それは待ち続けます。boost scoped_lockでCPU使用量が多すぎる
Test* Foo::Get()
{
boost::interprocess::scoped_lock<boost::interprocess::interprocess_mutex> lock (mutex) ; // mutex is boost::interprocess::interprocess_mutex
if (this->check == 0)
this->interprocessCondition.wait (lock) ; // interprocessCondition is boost::interprocess::interprocess_condition
...
}
私がサンプリングをしたとき、私はCPUの約90%を消費することが分かった。
このパフォーマンスの問題を解決するお手伝いがありますか?添付の画像をご覧ください。
他に何かしているのですか、ロックをプロファイリングしていますか? 「何か他のもの」のコードはどのように見えますか? –
それはちょうど何かの共有メモリからの読み込みです。私は完全な実行可能ファイルをプロファイルしました。 – MacGeek
それはあまり役に立ちません。共有メモリーからintを読み取るよりも、ロックを取って*ロット*多くのCPUを取るのが普通です。ロックを細かくすることで解決します。 –