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

Thread Index - CreateSemaphore() ->