System.SyncObjs.TSemaphore

De RAD Studio API Documentation
Aller à : navigation, rechercher

System.SyncObjs.THandleObjectSystem.SyncObjs.TSynchroObjectSystem.TObjectTSemaphore

Delphi

TSemaphore = class(THandleObject)

C++

class PASCALIMPLEMENTATION TSemaphore : public THandleObject

Propriétés

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

Description

TSemaphore est une primitive de synchronisation qui gère l'exécution simultanée des threads, dans le contexte de partage d'une ressource commune.

Utilisez TSemaphore dans les applications multithreads qui requièrent un accès sécurisé à une ressource partagée.

Il existe pour chaque sémaphore une variable compteur associée. Cette variable donne le nombre d'unités de la ressource partagée qui sont actuellement libres. Le compteur est décrémenté à chaque fois qu'un thread verrouille le sémaphore et incrémenté quand un thread libère le sémaphore.

Si un thread tente de verrouiller le sémaphore quand la valeur du compteur est nil, le thread est alors ajouté dans la file d'attente du sémaphore. Le premier thread de la file d'attente du sémaphore verrouille le sémaphore dès que la valeur du compteur est différente de zéro.

Lors de l'instanciation de la classe TSemaphore, le nombre d'unités libres initiales de la ressource partagée peut être spécifié. C'est à vrai dire la valeur initiale de la variable compteur du sémaphore.

En outre, le nombre d'unités disponibles de la ressource partagée peut être spécifié par le biais du paramètre AMaximumCount du constructeur de la classe TSemaphore.

Remarque :  Si le nombre des unités disponibles de la ressource partagée est un, TSemaphore est alors appelé un sémaphore binaire et est simplement équivalent à un TMutex.

Voir aussi