System.SyncObjs.TConditionVariableMutex.WaitFor

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

Delphi

function WaitFor(AExternalMutex: TMutex; TimeOut: Cardinal = INFINITE): TWaitResult;

C++

HIDESBASE System::Types::TWaitResult __fastcall WaitFor(TMutex* AExternalMutex, unsigned TimeOut = (unsigned)(0xffffffff));

Eigenschaften

Typ Sichtbarkeit Quelle Unit Übergeordnet
function public
System.SyncObjs.pas
System.SyncObjs.hpp
System.SyncObjs TConditionVariableMutex

Beschreibung

Wartet auf die Bedingungsvariable und gibt den angegebenen Mutex frei.

WaitFor wartet auf die Bedingungsvariable und gibt den Mutex frei, der im Parameter AExternalMutex angegeben ist.

Der Parameter TimeOut legt das Zeitüberschreitungsintervall fest. Wenn dieses Intervall abgelaufen ist, wird der Mutex erneut belegt, auch wenn die Bedingungsvariable nicht von anderen Threads aktiviert worden ist.

Das von der Funktion WaitFor zurückgegebenen Ergebnis hat den Typ TWaitResult und kann einer der folgenden Werte sein:



Wert

Bedeutung

wrSignaled

Bedingungsvariable wurde aktiviert.

wrTimeout

Das Zeitüberschreitungsintervall ist abgelaufen, ohne dass die Bedingungsvariable aktiviert wurde.

wrAbandoned

Die Bedingungsvariable wurde freigegeben, bevor das Zeitüberschreitungsintervall abgelaufen ist.

wrError

Beim Warten ist ein Fehler aufgetreten. Überprüfen Sie die Eigenschaft LastError. Der Fehlercode in LastError enthält nähere Informationen.



Bedingungsvariablen können plötzlich aktiviert werden, ohne dass ein expliziter Aufruf der Methoden Release oder ReleaseAll erfolgt ist. Es ist auch möglich, dass andere Threads ausgeführt werden, bevor der Thread aktiviert wird, der auf die Bedingungsvariable wartet. Rufen Sie deshalb WaitFor in einer Schleife auf. Um die oben genannten Fehler zu vermeiden, sollte die Schleife testen, ob die gewünschte Bedingung auch erfüllt wird, nachdem die Bedingungsvariable aktiviert wurde.

Siehe auch