Threaded


Syntax
Threaded[.<Typ>] <Variable[.<Typ>]> [= <konstanter Ausdruck>] [, ...]
Beschreibung
Threaded ermöglicht das Erstellen von Thread-basierten beständigen Variablen, Arrays (außer multi-dimensionaler Arrays), Listen oder Maps.

Das bedeutet, dass jeder Thread seine eigene Version des Objekts haben wird. Dies ist nur nützlich beim Schreiben von "multithreaded" Programmen (mit mehreren Prozessen). Wenn nach Threaded ein Typ angegeben wird, dann wird der Standard-Typ für diese Deklaration geändert.

Jeder Variable kann direkt ein Standard-Wert zugewiesen werden, aber dies muss ein konstanter Wert sein. Die Thread-Initialisierung erfolgt beim ersten Start des Threads. Das bedeutet, dass bei gleichzeitiger Deklaration und Zuweisung einer Thread-Variable die Variable für alle Threads zugewiesen wird. Siehe Beispiel 2. Beim Deklarieren eines "Threaded" Arrays, muss der Dimensions-Parameter ebenfalls ein konstanter Wert sein.

Ein "Threaded" Objekt kann nicht in einer Prozedur deklariert werden, sein Geltungsbereich ist immer global.

Beispiel: 1 Mit Variablen

  Threaded Counter
  
  Counter = 128
  
  Procedure Thread(Parameter)
    
    Debug Counter ; Wird null anzeigen, da dieser Thread diese Variable bisher nicht verwendet hat
    Counter = 256
    Debug Counter ; Wird 256 anzeigen
    
  EndProcedure
  
  Thread = CreateThread(@Thread(), 0)
  WaitThread(Thread) ; Warte auf das Beenden des Threads
  
  Debug Counter ; Wird 128 anzeigen, auch wenn 'Counter' innerhalb des Threads verändert wurde

Beispiel: 2 Alle Threads

  Threaded Counter = 128 ; Definiert für alle Threads
  
  Procedure Thread(Parameter)
    
    Debug Counter ; Wird 128 anzeigen, da beim Programmstart auch ein Thread gestartet wurde
    Counter = 256
    Debug Counter ; Wird 256 anzeigen
    
  EndProcedure
  
  Thread = CreateThread(@Thread(), 0)
  WaitThread(Thread) ; Warte auf das Beenden des Threads
  
  Debug Counter ; Wird 128 anzeigen, auch wenn 'Counter' innerhalb des Threads verändert wurde