dポイントプレゼントキャンペーン実施中!

はじめまして。
現在.NET 2003環境のVC++にて開発を行っています。

そこで知恵をかして頂きたいのですが、
WaitForMultipeObjects関数で待機している場合、
引数で指定している複数のイベントオブジェクトが
ほぼ同時にシグナル化した場合、イベントの取りこぼし
が発生する場合ってあるのでしょうか。

<例>
スレッドA     スレッドB      スレッドC
          for(;;){
SetEvent([0])     res = WaitFor...  SetEvent([1])
            SleepEx(100, FALSE);
          }
・スレッドBが複数のイベントを待機
・スレッドA、Cがイベント発行
・この場合、A、Cでほぼ同時にイベントが発生された場合、
 (1)A(またはC)発行のイベントを取りこぼす
 (2)A(またはC)発行のイベントを処理したのち、
  のこりのイベントを再度処理する(for(;;)でループしている為)

取りこぼしの可能性があるとしたら、対応方法もできれば
知りたいです。

以上、よろしくお願い致します。

A 回答 (1件)

基本的にセットされたイベントはクリアするまで保持されますから、次のWaitForMultipeObjectsで捕捉されます。

だから(2)ですね。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

やっぱり(2)ですか。
実際、テストプログラムでも(2)で動作してましたんで、
そうかとは思っていたんですが、開発中のプログラムでは、
イベントを取りこぼしたとしか思えない動作をしていまして。

他に原因がないかもうちょっと調べてみます。
ありがとうございます。

お礼日時:2010/02/09 12:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!