Threads initialisieren

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Multithread-Anwendungen erstellen


So initialisieren Sie ein Thread-Objekt:

  1. Weisen Sie dem Thread eine Standardpriorität zu.
  2. Geben Sie an, wenn der Thread freigegeben wird.

So weisen Sie eine Standardpriorität zu:

  1. Weisen Sie dem Thread unter Verwendung eines der in der nachfolgenden Tabelle aufgeführten Werte eine Standardpriorität zu.Verwenden Sie eine hohe Priorität für zeitkritische Aufgaben und eine niedrige Priorität zur Ausführung anderer Aufgaben.

Wert

Priorität

tpIdle

Der Thread wird nur dann ausgeführt, wenn sich das System im Leerlauf befindet. Windows unterbricht niemals einen anderen Thread zugunsten eines Threads mit der Prioritätsstufe tpIdle.

tpLowest

Die Priorität des Threads liegt zwei Stufen unter der normalen Ebene.

tpLower

Die Priorität des Threads liegt eine Stufe unter der normalen Ebene.

tpNormal

Der Thread besitzt normale Priorität.

tpHigher

Die Priorität des Threads liegt eine Stufe über der normalen Ebene.

tpHighest

Die Priorität des Threads liegt zwei Stufen über der normalen Ebene.

tpTimeCritical

Der Thread besitzt höchste Priorität.

  1. Überschreiben Sie die Methode Create (Delphi) oder den Standardkonstruktor (C++) der Thread-Klasse, indem Sie der Deklaration einen neuen Konstruktor hinzufügen.
  2. Fügen Sie Code für den Konstruktor ein. Es folgt ein Beispiel für einen Thread mit niedriger Priorität:
  3.  constructor TMyThread.Create(CreateSuspended: Boolean);
     begin
       inherited Create(CreateSuspended);
       Priority := tpIdle;
     end;
    
     TMyThread::TMyThread( bool CreateSuspended ) : TThread( CreateSuspended ) {
       Priority = tpIdle;
     }
    
  4. Geben Sie an, ob der Thread automatisch freigegeben werden soll, wenn seine Ausführung beendet ist.

Warnung:  Wenn eine rechenintensive Operation hohe Priorität erhält, kann dies die Ausführung der anderen Threads in der Anwendung blockieren. Es sollten nur solche Threads höchste Prioritätsstufen erhalten, die den Großteil der Zeit auf externe Ereignisse warten.

So geben Sie an, wann ein Thread freigegeben werden soll:

  1. Setzen Sie die Eigenschaft FreeOnTerminate auf True, sofern die Thread-Ausführung nicht mit anderen Threads koordiniert werden muss.
  2. Falls die Thread-Ausführung mit einem anderen Thread koordiniert werden muss, setzen Sie die Eigenschaft FreeOnTerminate auf False. Dann heben Sie die Verknüpfung der beiden Threads auf und geben explizit den ersten Thread frei.

Siehe auch