ThreadPriority()

Syntaxe

AnciennePriorite = ThreadPriority(Thread, Priorite)
Description
Change la priorité du thread spécifié et renvoie l'ancienne priorité. La priorité peut prendre une valeur de la plage 1 à 32. 1 est la priorité la plus basse, 16 est une priorité normale et 32 correspond à un niveau de priorité en temps-critique (la plus haute, à n'utiliser que si vous êtes sûr de ce que vous faites). Si la priorité est 0, alors aucun changement n'est effectué (utile pour seulement trouver le niveau de priorité du thread sans le modifier).

Windows ne supporte pas les 32 niveaux de priorité, voici le tableau correspondant:
  - 1: le plus bas
  - between 2 and 15: en dessous de la normale 
  - 16:  normal
  - between 17 and 30: au dessus de la normale
  - 31: le plus haut
  - 32: temps critique

Valeur de retour

Renvoie la priorité du thread avant l'appel de cette commande. Ce qui peut être utile si vous voulez seulement augmenter la priorité du thread pour un court moment et ensuite revenir à l'ancienne valeur. La valeur renvoyée n'est pas nécessairement la même que celle donnée en paramètre de ThreadPriority(), car elle dépend de la granularité du réglage de la priorité offerte par le système.

Exemple

  ; Une procedure toujours en cours d'exécution (aucune commande Delay n'est employée
  ; car cela obligerait le thread à s'arrêter pendant qu'il serait en attente)
  Procedure ImprimeUnTruc(*Intervalle)
    For i = 0 To 1000000000
      ; occupé par une méchante attente
    Next
  EndProcedure
  
  If OpenConsole()
    thread = CreateThread(@ImprimeUnTruc(), 500)
    If thread
      ; Augmente la priorité au-dessus du thread principal
      ; Vous devriez remarquer un délai avant que la commande d'impression
      ; ne soit executée. Maintenant changez le 17 en 15 (plus bas que la priorité normale)
      ; et observez que la commande d'impression s'execute instantanément
      ThreadPriority(thread, 17)
      PrintN("Attend que le thread de plus haute priorite se termine")
    EndIf
    
    PrintN("Appuyer sur Entree pour quitter")
    Input()
  EndIf

OS Supportés

Windows

<- ThreadID() - Thread Index - TryLockMutex() ->