TSemaphore
| TSemaphore = class (TObject) | Interface de TSemaphore | Exemples de TSemaphore |
Qubes 6.1 Mécanisme d'accès exclusif à des ressources partagées
- Un sémaphore sert à gérer un accès exclusif à des ressources partagées entre plusieurs process informatiques. De cette façon, on évite que 2 process agissent simultanément sur la même ressource, ce qui mène généralement à des états imprévisibles.
- Dans Qubes, Creative IT a mis en place un mécanisme de sémaphore qui utilise un fichier pour marquer la réservation de ressource par un process (Qubes, QubesExpress, QubesPeon).
Pour que ce mécanisme fonctionne, il faut que tous les process qui partagent le même sémaphore aient un accès en lecture/écriture au dossier qui contiendra le fichier de réservation. - Remarque importante : cette classe TSemaphore sert surtout pour des verrous entre 2 process différents (par exemple entre un QubesExpress et un QubesPeon, ou entre 2 clients Qubes sur 2 postes différents).
Quand on veut faire un sémaphore pour verrouiller 2 threads d'un même process (par exemple pour éviter que 2 WebScripts d'un même QubesExpress s'exécutent en même temps), il vaut mieux utiliser un sémaphore en mémoire : cf. exemple de Function/CompareExchangeGlobalVar (c'est plus simple, plus performant et évite des problèmes de droit d'accès au système de fichier). - L'intégration de cette unité dans les scripts oblige à utiliser la syntaxe des Langage/Uses :
uses System.IO.Semaphore;