System.SyncObjs.TConditionVariableMutex.WaitFor

De RAD Studio API Documentation
Aller à : navigation, rechercher

Delphi

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

C++

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

Propriétés

Type Visibilité  Source Unité  Parent
function public
System.SyncObjs.pas
System.SyncObjs.hpp
System.SyncObjs TConditionVariableMutex

Description

Définit l'état de veille sur la variable de condition, puis libère le mutex spécifié.

Appelez WaitFor pour définir l'état de veille sur la variable de condition et libérer le mutex spécifié par le paramètre AExternalMutex.

Le paramètre TimeOut définit l'intervalle du délai d'attente. Quand cet intervalle est écoulé, le mutex est réacquis, même si la variable de condition n'a pas été réveillée par d'autres threads.

Le résultat renvoyé par la fonction WaitFor est de type TWaitResult et peut prendre une des valeurs suivantes :



Valeur

Signification

wrSignaled

La variable de condition a été réveillée.

wrTimeout

L'intervalle du délai d'attente s'est écoulé sans que la variable de condition n'ait été réveillée.

wrAbandoned

La variable de condition a été détruite avant que l'intervalle du délai d'attente ne soit écoulé.

wrError

Une erreur a eu lieu pendant l'attente. Vérifiez la propriété LastError pour obtenir un code d'erreur donnant davantage d'informations.



Les variables de condition peuvent subitement se réveiller, sans effectuer un appel explicite à la méthode Release ou ReleaseAll. En outre, d'autres threads peuvent s'exécuter avant que le thread qui est en veille sur la variable de condition ne soit réveillé. Par conséquent, effectuez l'appel à WaitFor à l'intérieur d'une boucle. Pour éviter les erreurs mentionnées ci-dessus, la boucle doit tester que la condition désirée devient true, même après le réveil de la variable de condition.

Voir aussi