Autor Beitrag
G-man
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: Di 24.02.04 16:29 
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.

_________________
...To err is human, but to really foul things up requires a computer.
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: Di 24.02.04 17:09 
Wird mir Sleep nicht die ganze Anwendung "schlafen gelegt"?

_________________
...To err is human, but to really foul things up requires a computer.
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: Di 24.02.04 17:12 
ja, ware ja uch nur eine variante, weiß ja nicht was du machen willst...

rokdd
G-man Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 258

Win 2000, Win ME, SuSE 8.2
D5 Standard, D6 Professional
BeitragVerfasst: 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.

_________________
...To err is human, but to really foul things up requires a computer.
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1173
Erhaltene Danke: 14


RAD Studio XE2
BeitragVerfasst: 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.

_________________
Ist Zeit wirklich Geld?
rokdd
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 329

Win XP
D6
BeitragVerfasst: Di 24.02.04 18:58 
Sorry wusste ich nicht, bei mir hat es bis jetzt immer funktioniert...

Rokdd