-3

他のスレッドを待つことができるイベントについて読みました:AutoResetEventManualResetEvent.

これら2つのクラスの違いは何ですか? 並行性の高いプログラムにはどのクラスが適していますか?

4

1 に答える 1

4

違いは、イベントが通知される (設定される) ときに何が起こるかです。

  • 手動リセット イベントは、明示的に再度リセットするまで通知されたままになります。
  • 自動リセットイベントは、それを待っている最初のスレッドが目覚めると、自動的にリセットされます (シグナルされません)。

一般に、手動リセット イベントを使用する方が簡単だと思います。ほとんどの場合、特定の時点でイベントの状態を判断する方が簡単だからです。

とはいえ、待機中のスレッドの1 つだけが通知されることが保証されているため、自動リセット イベントの動作が同期の実現に適している場合があります。そのため、プロデューサー/複数のコンシューマーのシナリオで、1 つのコンシューマーのみに通知する必要がある場合は、自動リセット イベントを検討する必要があります。

于 2013-03-14T17:35:11.487 に答える