JosephとBenAlbahariによるC#3.0の概要を読んでいるときに、次の段落に出くわしました(673ページ、「待機とパルスによるシグナリング」というタイトルのセクションの最初の段落)
「Monitorクラスは、 WaitとPulseの2つの静的メソッドを介して別のシグナリング構造を提供します。原則として、カスタムフラグとフィールド( lockステートメントで囲まれています)を使用してシグナリングロジックを自分で記述し、 WaitコマンドとPulseコマンドを導入してCPUの回転を軽減します。この低レベルのアプローチの利点は、Wait、Pulse、およびlockステートメントだけで、 AutoResetEvent、ManualResetEvent、Semaphore、およびWaitHandleの機能を実現できることです。の静的メソッドWaitAllおよびWaitAny。さらに、Wait and Pulse は、すべての待機ハンドルが同じようにチャレンジされる状況で受け入れられる可能性があります。」
私の質問は、最後の文の正しい解釈は何ですか?
- WaitOne()が特定の待機ハンドルでたまにしか呼び出されない、まともな/多数の待機ハンドルがある状況。
- 適切な/多数の待機ハンドルがあり、特定の待機ハンドルで複数のスレッドがブロックされることはめったにない状況。
- 他の解釈。
また、そのような状況の例と、おそらく他の方法ではなく、待機とパルスを介してそれらがより効率的に処理される方法および/または理由を明らかにしていただければ幸いです。
ありがとうございました!
編集:私はここでオンラインでテキストを見つけました