Threaded


Syntax
Threaded[.<type>] <variable[.<type>]> [= <expression constante>] [, ...]
Description
Threaded permet de créer une variable, un tableau sauf les tableaux multi-dimensionnels), une liste ou une map qui sera persistant pour chaque thread. C'est à dire que chaque thread aura sa propre version de l'objet. C'est uniquement utile lors de l'écriture de programmes multi-threadés.
Si un type est spécifié après le mot-clef Threaded, le type par défaut pour cette déclaration est modifié.

Chaque variable peut avoir une valeur par défaut assignée, mais cette valeur doit être une constante. Les variables threadées sont initialisées au lancement du premier thread. Cela implique que si la variable est définie est assignée à une valeur en même temps alors elle est définie pour tous les threads. Voir exemple 2. Lors de la déclaration d'un tableau threadé, les paramètres de dimensionnement doivent être des valeurs constantes.

Un objet threadé ne peut pas être déclaré dans une procédure, et sa portée est toujours globale.

Exemple: 1 Avec une variable

  Threaded Compteur
  
  Compteur = 128
  
  Procedure Thread(Parametre)
    
    Debug Compteur ; Affichera zero, car ce thread n'a pas encore utilisé cette variable
    Compteur = 256
    Debug Compteur ; Affichera 256
    
  EndProcedure
  
  Thread = CreateThread(@Thread(), 0)
  WaitThread(Thread) ; Attente de la fin d'exécution du thread.
  
  Debug Compteur ; Affichera 128, meme si 'Compteur' a ete change dans le thread

Exemple: 2 Tous les threads

  Threaded Compteur = 128
  
  Procedure Thread(Parametre)
    
    Debug Compteur ; Affichera 128, car quand on lance un programme, on lance aussi un thread
    Compteur = 256
    Debug Compteur ; Affichera 256
    
  EndProcedure
  
  Thread = CreateThread(@Thread(), 0)
  WaitThread(Thread) ; Attente de la fin d'exécution du thread.
  
  Debug Compteur ; Affichera 128, meme si 'Compteur' a ete change dans le thread