Threads initialisieren
Nach oben zu Multithread-Anwendungen erstellen
So initialisieren Sie ein Thread-Objekt:
- Weisen Sie dem Thread eine Standardpriorität zu.
- Geben Sie an, wenn der Thread freigegeben wird.
So weisen Sie eine Standardpriorität zu:
- 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. |
- Überschreiben Sie die Methode Create (Delphi) oder den Standardkonstruktor (C++) der Thread-Klasse, indem Sie der Deklaration einen neuen Konstruktor hinzufügen.
- Fügen Sie Code für den Konstruktor ein. Es folgt ein Beispiel für einen Thread mit niedriger Priorität:
- Geben Sie an, ob der Thread automatisch freigegeben werden soll, wenn seine Ausführung beendet ist.
constructor TMyThread.Create(CreateSuspended: Boolean);
begin
inherited Create(CreateSuspended);
Priority := tpIdle;
end;
TMyThread::TMyThread( bool CreateSuspended ) : TThread( CreateSuspended ) {
Priority = tpIdle;
}
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:
- Setzen Sie die Eigenschaft FreeOnTerminate auf True, sofern die Thread-Ausführung nicht mit anderen Threads koordiniert werden muss.
- 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.