Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 24.02.2009, 21:40 Titel: Thread beenden |
|
|
Hallo,
Ich möchte ein Programm schreiben das mit mehreren Threads arbeitet.
Meine Frage: Wie kann ich einen Thread, den ich mit ThreadCreate erstellt habe wieder "killen"? |
|
Nach oben |
|
 |
MisterD

Anmeldungsdatum: 10.09.2004 Beiträge: 3071 Wohnort: bei Darmstadt
|
Verfasst am: 24.02.2009, 21:52 Titel: |
|
|
exit sub in der entsprechenden sub?
oder meinst du von außen? dann auch exit sub, mussts ihm halt irgendwie mitteilen. _________________ "It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration."
Edsger W. Dijkstra |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 24.02.2009, 21:59 Titel: |
|
|
MisterD hat Folgendes geschrieben: | oder meinst du von außen? | Ja meine ich.
Mal gucken, werds schon irgendwie hinkriegen. |
|
Nach oben |
|
 |
nemored

Anmeldungsdatum: 22.02.2007 Beiträge: 4699 Wohnort: ~/
|
Verfasst am: 24.02.2009, 22:23 Titel: |
|
|
In der Referenz gibt es unter dem Eintrag zu ThreadCreate ein schönes Beispiel: DIM SHARED AS INTEGER terminate; diese Variable dann im Hauptprogramm (bei Bedarf) setzen und im Thread auswerten. _________________ Deine Chance beträgt 1:1000. Also musst du folgendes tun: Vergiss die 1000 und konzentriere dich auf die 1. |
|
Nach oben |
|
 |
28398
Anmeldungsdatum: 25.04.2008 Beiträge: 1917
|
Verfasst am: 24.02.2009, 23:20 Titel: |
|
|
Mit der WindowsAPI kannst du die Prozedur eines Threads überschreiben, und so ihn zum Beenden zwingen. Ist aber sehr dirty  |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 25.02.2009, 01:18 Titel: |
|
|
ThreadDestroy gibt es nicht, udn geht auch nicht von FB aus, mit FB befehlen.
Dazu musst du (sowohl für win als auch für linux) die Threading methoden der API des entsprechenden OS'es nutzen, um threads zu erstellen, zu verwaltung und zu zerstören.
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
Nitroxis
Anmeldungsdatum: 27.02.2008 Beiträge: 300 Wohnort: Irgendwo...
|
Verfasst am: 26.02.2009, 20:39 Titel: |
|
|
Aha ok danke. Dann werde ich wohl "DIM SHARED AS INTEGER terminate" oder soetwas in der art benutzen. |
|
Nach oben |
|
 |
ThePuppetMaster

Anmeldungsdatum: 18.02.2007 Beiträge: 1839 Wohnort: [JN58JR]
|
Verfasst am: 26.02.2009, 20:55 Titel: |
|
|
Code: |
dim xmutex as any ptr
dim xthread as any ptr
dim xthreadexit as ubyte
sub foo()
do
mutexlock(xmutex)
if xthreadexit = 1 then exit do
mutexunlock(xmutex)
sleep 100, 1
print "."
loop
mutexunlock(xmutex)
end sub
xmutex = mutexcreate()
xthread = threadcreate(cast(any ptr, @foo))
sleep 1000, 1
mutexlock(xmutex)
xthreadexit = 1
mutexunlock(xmutex)
threadwait(xthread)
mutexdestroy(xmutex)
end
|
MfG
TPM _________________ [ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ] |
|
Nach oben |
|
 |
|