CMultiLock::Lock

Rufen Sie diese Funktion, um zu einem oder mehreren der Ressourcen zu erhalten, die durch die Synchronisierungsobjekte gesteuert werden, die dem CMultiLock -Konstruktor angegeben werden.

DWORD Lock(
   DWORD dwTimeOut = INFINITE,
   BOOL bWaitForAll = TRUE,
   DWORD dwWakeMask = 0 
);

Parameter

  • dwTimeOut
    Gibt die Zeitdauer an, die auf das Synchronisierungsobjekt zu warten, bis zur Verfügung steht (signalisiert).Wenn INFINITE, Lock wartet, bis das Objekt signalisiert wird, bevor zurückgibt.

  • bWaitForAll
    Gibt an, ob alle Objekte müssen gleichzeitig an warteten signalisiert werden, bevor sie zurück.Wenn FALSE, Lock zurückgibt, wenn eines der Objekte, die an verwaltet werden, signalisiert wird.

  • dwWakeMask
    Gibt anderen Bedingungen, die berechtigt sind, um den Wartevorgang abbrechen.Eine vollständige Liste der verfügbaren Optionen für diesen Parameter, finden Sie unter MsgWaitForMultipleObjects in Windows SDK.

Rückgabewert

Wenn Lock fehlschlägt, gibt es - 1. zurück.Wenn erfolgreich, gibt es einen der folgenden Werte zurück:

  • Zwischen WAIT_OBJECT_0 und WAIT_OBJECT_0 + (Zahl Objekte 1).

    Wenn bWaitForAllTRUE ist, werden alle Objekte signalisiert (verfügbar).Wenn bWaitForAllFALSE, ist der Rückgabewert - WAIT_OBJECT_0 ist der Index im Array des Objekts, das signalisiert wird (verfügbar).

  • WAIT_OBJECT_0 + Zahl (- Objekte)

    Ein Ereignis, das in dwWakeMask angegeben wird, ist in der Eingabewarteschlange des Threads verfügbar.

  • Zwischen WAIT_ABANDONED_0 und WAIT_ABANDONED_0 + (Zahl Objekte 1).

    Wenn bWaitForAllTRUE ist, werden alle Objekte signalisiert, und ist mindestens eines der Objekte ein abgebrochener Mutex-Objekt.Wenn bWaitForAllFALSE, ist der Rückgabewert - WAIT_ABANDONED_0 ist der Index im Array des abgebrochenen Mutexobjekts, das den Wartevorgang zufriedenstellte.

  • WAIT_TIMEOUT

    Das Timeoutintervall angegeben im dwTimeOut abgelaufen ohne den folgenden Wartevorgang.

Hinweise

Wenn bWaitForAllTRUE ist, gibt Lock erfolgreich zurück, sobald alle Synchronisierungsobjekte gleichzeitig signalisiert werden.Wenn bWaitForAllFALSE ist, gibt Lock zurück, sobald eine oder mehrere der Synchronisierungsobjekte signalisiert wird.

Wenn Lock nicht in der Lage ist, sofort zurückzukehren, wartet er nicht mehr als die Anzahl der Millisekunden, die im dwTimeOut -Parameter angegeben werden, bevor es zurückgibt.Wenn dwTimeOutINFINITE ist, gibt Lock nicht zurückgegeben, wenn Zugriff auf ein Objekt abgerufen wurde, oder eine Bedingung, die in dwWakeMask angegeben wurde, erfüllt wurde.Wenn Lock in der Lage ist, ein Synchronisierungsobjekt abzurufen, gibt sie erfolgreich zurück; Wenn nicht, wird Fehler zurück.

Anforderungen

Header: afxmt.h

Siehe auch

Referenz

CMultiLock-Klasse

Hierarchien-Diagramm