In PThreads, wenn eine bedingte Variable signalisiert wird und keine Threads blockieren auf pthread_cond_wait()
, dann ist dieses Signal verloren.Bleibt der signalisierte Zustand einer CONDITIONAL_VARIABLE bestehen, auch wenn keine Threads auf dieses Signal warten?
Wenn Sie SetEvent() verwenden, um ein Ereignis in Windows zu signalisieren, bleibt dieses Ereignis im signalisierten Status, bis ein anderes Thread auf dieses Ereignisobjekt wartet.
Welche der oben genannten Verhaltensweisen werden mit CONDITIONAL_VARIABLEs unter Verwendung von WakeConditionVariable() signalisiert?
Es spielt keine Rolle, da das [intended usage pattern] (https://msdn.microsoft.com/en-us/library/windows/desktop/ms682052 (v = vs.85) .aspx) zu verifizieren ist der Zustand vor dem Warten. Wenn die Bedingungsvariable aktiviert wird, wenn keine Kellner vorhanden sind, überprüft der nächste Kellner die Bedingung, stellt sicher, dass sie erfüllt ist, und ruft niemals 'SleepConditionVariable' an erster Stelle auf. –