0

私は最初の並列プログラミングの割り当てを行っていますが、ミューテックスのロック状況全体で何をしているのかほとんどわかりません。

Helgrind を使用してコード内の競合状態を見つけようとしていますが、本来あるべき場所にロックがあると、Helgrind は驚くべき 7300 エラーを返します! ただし、クリティカル セクションでいくつかのロックを削除すると、実際にはエラーが 6000 に減少しますが、これはロックが必要な領域であることはわかっています。

何が原因でしょうか? そして、一般的な声明として、誰かが初心者向けのミューテックスロックを説明している良い情報源への参照を私に与えることができますか? ありがとうございました!

4

1 に答える 1

1

まず、Helgrind は競合を検出するだけでなく、非再帰的ミューテックスの再帰的ロック、以前にロックされていなかったミューテックスのロック解除など、ミューテックスの誤用も検出しますpthread_mutex_*。ミューテックス API の誤用。Helgrindのマニュアル ページには、Helgrind が検出するエラーの種類に関する詳細な説明があります。

第 2 に、Helgrind のような動的な競合検出機能は、多くのエラー メッセージを生成することで有名です。多くの場合、多すぎて役に立ちません。エラー レポートに圧倒されないように、最初はできるだけ小さなコード フラグメントで試してください。

于 2012-12-20T19:54:28.227 に答える