Multithread-Programme
Nach oben zu Referenz zur C-Laufzeitbibliothek
Win32-Programme können mehrere Ausführungs-Threads erstellen. Wenn ein Programm mehrere Threads erstellt und diese Threads die C++-Laufzeitbibliothek benutzen, müssen Sie die Bibliothek CW32MT.LIB oder CW32MTI.LIB verwenden.
Die Multithread-Bibliotheken stellen die folgenden Funktionen zum Erstellen von Threads bereit:
Die Multithread-Bibliotheken stellen auch die zugehörigen Funktionen zum Beendigen von Threads zur Verfügung:
- _endthread
- _endthreadex
- _threadid Eine globale Variable, die die aktuelle Kennnummer des Threads (auch Thread-ID genannt) enthält.
Die Header-Datei stddef.h enthält die Deklaration der Variablen _threadid.
Zum Compilieren und Linken eines Multithread-Programms müssen Sie die Compiler-Option -tWM
angeben. Ein Beispiel:
BCC32 -tWM THREAD.C
Anmerkung: Seien Sie insbesondere vorsichtig, wenn Sie die Funktion signal in einem Multithread-Programm verwenden. Die Signale
SIGINT
,SIGTERM
undSIGBREAK
können in einer nicht unter Win32 laufenden Anwendung nur vom Haupt-Thread (Thread eins) verwendet werden. Wird eines dieser Signals ausgelöst, dann wird der aktuell ausgeführte Thread ausgesetzt und die Steuerung geht, sofern vorhanden, an die Signalbehandlungsroutine über, die von Thread eins eingerichtet wurde. Andere Signale können von jedem Thread behandelt werden. Eine Signalbehandlungsroutine sollte keine Funktionen der C++ Laufzeitbibliothek verwenden, da dabei ein Semaphor-Deadlock auftreten könnte. Stattdessen sollte die Behandlungsroutine ein Flag setzen oder einen Semaphor senden und unmittelbar darauf zurückkehren.