Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Thread schlafen legen
G-man - Di 24.02.04 16:29
Titel: Thread schlafen legen
Moin,
weiß einer von euch, wie man einen Thread für eine bestimmte Zeit mitten in der Arbeit ruhen lassen kann?
Ich habe schon lange darüber nachgedacht aber mir ist partout nichts eingefallen.
rokdd - Di 24.02.04 16:42
hallon
den thread steuerst du mit Resume und Suspend. wenn du nach einer bestimmten zeit in wieder loslegen lassen willst, musst du zwischen stoppen und wiederstarten Sleep oder einen Timer benutzen...
Hoffe dir geholfen zu haben
rokdd
G-man - Di 24.02.04 17:09
Wird mir Sleep nicht die ganze Anwendung "schlafen gelegt"?
rokdd - Di 24.02.04 17:12
ja, ware ja uch nur eine variante, weiß ja nicht was du machen willst...
rokdd
G-man - Di 24.02.04 17:35
Na ich will halt einen Thread mitten im Programm für eine bestimmte Zeit lahm legen, sodass er nichts mehr verarbeitet.
rokdd - Di 24.02.04 17:43
weiß ich doch! dann musst du folgenden programmabluaf nutzen(kann aber auch noch andere geben:
1.thread stoppen mit suspend
2. timer x starten
3. nach intervall von timer x:
3.1 timer deaktivieren
3.2 thread fortsetzen mit resume!
Rokdd
AndyB - Di 24.02.04 18:55
| G-man hat folgendes geschrieben: |
| Wird mir Sleep nicht die ganze Anwendung "schlafen gelegt"? |
Nein. Sleep() legt den aktuellen Thread schlafen. Wenn das natürlich der Hauptthread ist, dann steht die Messageloop.
Von Suspend sollte man die Finger lassen, denn man kann nicht bestimmen, wo der Thread nun angehalten werden soll und das kann so weit gehen, das deadlocks entstehen, weil ein Synchronisierungs-Objekt (Mutex/Semaphore/...) gerade angefordert und noch nicht zurückgegeben wurde. Das ist auch der Grund, warum es unter Linux bei den POSIX Threads kein Suspend gibt. Borland hat es zwar geschafft diese nachzubilden, jedoch nur nur durch einen Hack, der bei neueren Kernel zu Fehler führt, die bis zur Programmterminierung gehen können.
rokdd - Di 24.02.04 18:58
Sorry wusste ich nicht, bei mir hat es bis jetzt immer funktioniert...
Rokdd
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!