Initialisation d'un thread

De RAD Studio
Aller à : navigation, rechercher

Remonter à Construction d'une application multithread


Pour initialiser un objet thread

  1. Affectez une priorité par défaut.
  2. Indiquez le moment auquel le thread est libéré.

Pour affecter une priorité par défaut

  1. Affectez une priorité par défaut au thread à partir des valeurs du tableau ci-dessous.Utilisez une priorité élevée pour gérer les tâches critiques et une priorité basse pour les autres tâches.

Valeur

Priorité

tpIdle

Le thread s'exécute seulement quand le système est en attente. Windows n'interrompt pas les autres threads pour exécuter un thread de priorité tpIdle.

tpLowest

La priorité du thread est deux points en dessous de la normale.

tpLower

La priorité du thread est un point en dessous de la normale.

tpNormal

La priorité du thread est normale.

tpHigher

La priorité du thread est un point au dessus de la normale

tpHighest

La priorité du thread est deux points au dessus de la normale.

tpTimeCritical

Le thread a la priorité la plus élevée.

  1. Redéfinissez la méthode Create(Delphi) ou le constructeur par défaut (C++) de la classe thread en ajoutant un nouveau constructeur à la déclaration.
  2. Code lee constructeur. Voici l'exemple d'un thread à basse priorité : constructor TMyThread.Create(CreateSuspended: Boolean); begin inherited Create(CreateSuspended); Priority := tpIdle; end; TMyThread::TMyThread( bool CreateSuspended ) : TThread( CreateSuspended ) { Priority = tpIdle; }
  3. Indiquez si le thread doit être automatiquement libéré quand son exécution est terminée.

Avertissement : "Gonfler" la priorité du thread pour une opération utilisant intensivement la CPU peut "sous-alimenter" les autres threads de l'application. Il ne faut accorder une priorité élevée qu'à des threads qui passent l'essentiel du temps à attendre des événements extérieurs.

Pour indiquer le moment auquel un thread est libéré

  1. Attribuez la valeur true à la propriété FreeOnTerminate, sauf si le thread doit être coordonné avec d'autres threads.
  2. Si le thread doit être coordonné avec un autre thread, initialisez FreeOnTerminate à false, puis libérez explicitement le premier thread du second.

Voir aussi