クリティカル セクションで保護されていない同じイベント ハンドラーで、2 つ以上のスレッドが Win32 API の SetEvent を呼び出すのは安全ですか?
3120 次
3 に答える
1
安全ですが、1 つのスレッドがそれを設定し、別のスレッドが同時にそれを設定した場合、2 つの通知を受け取ることはなく、1 つだけであることを覚えておいてください。2番目のものはTrueから... Trueに変更したためです。これが心配な場合は、代わりにセマフォを使用してください。
于 2009-05-26T17:57:48.253 に答える
0
同じイベントを待っている複数のスレッドがあり、同じコードを実行しているとします。
- 処理が完了するまでコードがイベントをクリアしない場合は、実質的に CS を持っています。イベントはクリアされるまで(自動リセットではなく)シグナル状態のままであるため、複数のスレッドにシグナルを送信しても、CPU をスピンさせる以外は何もしません。
- コードが処理の開始時にそれをクリアするか、イベントが autorset である場合、複数のスレッドが同じ関数を実行することになり、これらのスレッドが何かを共有すると安全ではなくなります。
于 2008-11-05T14:03:40.723 に答える