CreateMutex()

Syntax

Mutex = CreateMutex()
Beschreibung
Erstellt ein neues Mutex-Objekt. Dieses ist anfänglich entsperrt ("unlocked").

Das Hauptziel der Mutex-Befehle ist die Thread-Synchronisation. Sie bedeuten nicht zu viel Aufwand, aber sie arbeiten nur innerhalb eines Programms, nicht systemweit. Ein Mutex ist ein Objekt, welches zur gleichen Zeit nur "im Besitz" bzw. gesperrt ("locked") von einem Thread sein kann. Es wird daher verwendet, um geteilte Ressourcen zu schützen. Nur der Thread, der den Mutex gesperrt hat, wird Zugriff auf eine Datei, einen Speicherbereich, etc. haben.
Siehe LockMutex() und UnlockMutex() für das Sperren/Entsperren eines Mutex. @noparameter

Rückgabewert

Das neue Mutex-Objekt - oder Null, wenn die Mutex-Erstellung fehlgeschlagen ist.

Beispiel

  ; Starten Sie diesen Code so wie er ist. Sie werden sehen, das die Zeilen
  ; gemischt durch die Threads ausgegeben werden. Jetzt entfernen Sie den
  ; Kommentar vor den Mutex-Befehlen und die Strings werden in Reihenfolge
  ; ausgegeben, da nur ein Thread zur gleichen Zeit das Recht zum Ausführen
  ; der Print-Befehle bekommt.
  ;
  Procedure WithoutMutex(*Number)     
    Shared Mutex
    
    For a = 1 To 5      
      ;LockMutex(Mutex)    ; entfernen Sie das ';' um den Unterschied zu sehen
    
      PrintN("Thread "+Str(*Number)+": Trying to print 5x in a row:")
      For b = 1 To 5
        Delay(50)
        PrintN("Thread "+Str(*Number)+" Line "+Str(b))
      Next b          
      
      ;UnlockMutex(Mutex) ; entfernen Sie das ';' um den Unterschied zu sehen
    Next a    
  EndProcedure
  
  OpenConsole()
  Mutex = CreateMutex()
  
  thread1 = CreateThread(@WithoutMutex(), 1)
  Delay(25)
  thread2 = CreateThread(@WithoutMutex(), 2)
  Delay(25)
  thread3 = CreateThread(@WithoutMutex(), 3)
  
  WaitThread(thread1)
  WaitThread(thread2)
  WaitThread(thread3)
  
  Input()

Unterstützte OS

Alle

Thread Inhaltsverzeichnis - CreateSemaphore() ->