Pipe um Thread zu beenden
-
Hallo,
Ich möchte einen erstellten Thread wieder beenden. Da ich gelesen habe, dass es besser ist, wenn sich ein Thread selbst beendet, möchte ich gerne eine Pipe haben, damit ich zu gegebener Zeit aus meiner main() and die testthread() Funktion irgendeine Variable übergeben kann, sodass sich testthread() beendet.
Wie ist so etwas möglich?
Vielen Dank,
TuX.P.S.: Ich benutze C. Kein C++.
-
Wie das möglich ist, liest Du Dir am besten in der MSDN durch. Aber für Deinen Zweck ist eine Pipe viel zu viel Aufwand.
Übergib dem Thread beim Create einfach die Adresse einer Variablen aus Deiner main - Funktion.Oder - 2. Wahl - vereinbare eine globale Variable.
-
Da der Thread ja im selben Prozess läuft, reicht es aus eine "globale Variable" oder einen "Event" zu setzen, damit der Thread mitbekommt, dass er sich beenden soll.
-
Tux, in XP kannst du eine async-pipe erstelen (mit FILE_FLAG_OVERLAPPED), aber in win98 nur TerminateThread kann die ConnectNamedPipe Funktion toeten.
My example for Aurora: http://www.ionicwind.com/forums/index.php/topic,2748.0.html (zweite quellcode hookexe.src)
-
Für was brauchst Du ene Pipe.
Benutze eine globale Variable oder einen Arbeitsbereich für den Thread der ein Flag beherbergt oder ein Event. Wenn das Flag oder das Event gesetzt ist, dann kannst Du einfach den Thread mit eturn verlassen.
-
Martin Richter schrieb:
Benutze eine globale Variable oder einen Arbeitsbereich für den Thread der ein Flag beherbergt oder ein Event.
Wie kann man einen solchen Arbeitsbereich mit Flag erstellen? Globale Variablen müssen nicht unbedingt sein...
-
Du kannst dem Thread einen Pointer mitgeben.
Also erstelle Dir eine Struktur mit den erforderlichen Variablen für die Kommunikation mit dem Thread und gib dem Thread die Adresse mit.
-
Achso... Darauf bin ich gar nicht gekommen, Danke!