CreateMutex()
Syntaxe
Resultat = CreateMutex()Description
Crée un nouveau mutex.
Arguments
Aucun.
Valeur de retour
Renvoie le numéro du mutex s'il a été créé avec succès, zéro sinon.
Remarques
L'objectif principal des mutex est de faire de la synchronisation entre les threads. Ils ne consomment pas beaucoup de temps processeur, mais ils ne fonctionnent qu'au sein du programme (il n'est pas possible de synchroniser plusieurs programmes différents). Un mutex est un objet qui ne peut être verrouillé que par un seul thread à la fois, donc il est utilisé pour protéger l'accès aux ressources partagées (pour éviter que plusieurs threads n'accèdent en même temps aux mêmes données).
Exemple
; Exécutez ce programme une fois comme il se présente. ; Vous verrez que les lignes imprimées seront ; mélangées entre les threads. Puis supprimez ; les commentaires devant les commandes de Mutex ; et les chaînes seront imprimées dans l'ordre, ; car un seul thread à la fois sera autorisé ; à exécuter les commandes d'impression. ; Procedure SansMutex(*Numero) Shared Mutex For a = 1 To 5 ;LockMutex(Mutex) ; supprimez le commentaire pour voir la différence PrintN("Thread "+Str(*Numero)+" essaie d'imprimer 5 fois a la suite :") For b = 1 To 5 Delay(50) PrintN("Thread "+Str(*Numero)+" Ligne "+Str(b)) Next b ;UnlockMutex(Mutex) ; supprimez le commentaire pour voir la différence Next a EndProcedure OpenConsole() Mutex = CreateMutex() thread1 = CreateThread(@SansMutex(), 1) Delay(25) thread2 = CreateThread(@SansMutex(), 2) Delay(25) thread3 = CreateThread(@SansMutex(), 3) WaitThread(thread1) WaitThread(thread2) WaitThread(thread3) Input()
Voir aussi
FreeMutex()
OS Supportés
Tous