0

マルチスレッド アプリケーションで wait() および signal() 操作を使用する必要があるのはなぜですか?

私はマルチスレッドに比較的慣れておらず、相互排除をある程度理解していますが、wait() と signal() がどのように関係するかをよりよく理解する必要があります。

lock() と unlock() のみを使用してスレッド セーフを実現しているようです。私が間違っている?

誰かが待機/シグナルが使用され、待機とシグナルがロック/ロック解除で使用されていない例を教えてもらえますか? ロック/ロック解除よりも待機/シグナルを使用する利点は何ですか?

ありがとう。

4

2 に答える 2

1

私は計算数学/科学を扱っているので、私の例はそこから来ています。

ドット積 (多くの計算を合計する必要がある) などの縮小操作を行っていた場合、ロックとロック解除は、合計の順序は重要ではなく、空いている場合はスレッドが実行されるため便利です。

前の時間ステップを完了する必要がある次の時間ステップを実行する前に PDE を時間をかけて解いていた場合、ロック/ロック解除は機能しません。データが自由に変更できる場合でも、前提条件の計算が行われていない可能性があるためです。 、これは待機/シグナルを使用する場所です。

于 2013-07-22T03:04:40.910 に答える
0

あなたの答えは私に良いヒントを与えてくれましたが、このページの答えはまさに私が必要としていた説明でした.

条件変数とセマフォ

于 2013-07-22T23:39:32.113 に答える