手動リセット イベントが setEvent を使用して設定されているが、ResetEvent を使用してリセットされていない場合はどうなりますか。そのイベントは複数回トリガーされます。つまり、イベントが処理されている間、再びイベントが設定されます。
サンプル タスクは次のとおりです。
void foo()
{
...
SetEvent(hEvent1);
...
}
void foo1()
{
...
SetEvent(hEvent2);
...
}
int MainHandler()
{
...
dwEvent = WaitForMultipleObjects(2,
ghEvents, // array of objects
FALSE, // wait for any object
5000);
switch(dwEvent)
{
case hEvent1:
//do something
break;
case hEvent2:
//do something
break;
}
}
ここで、hEvent1 のケースが実行中 (つまり、まだ設定されている) に、何らかの形で再び hEvent1 がトリガーされたとします。手動リセット イベントですが、意図的に ResetEvent(hEvent1) を配置していません。では、競合状態はありますか?