Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Thread beenden

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 24.02.2009, 21:40    Titel: Thread beenden Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
MisterD



Anmeldungsdatum: 10.09.2004
Beiträge: 3071
Wohnort: bei Darmstadt

BeitragVerfasst am: 24.02.2009, 21:52    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 24.02.2009, 21:59    Titel: Antworten mit Zitat

MisterD hat Folgendes geschrieben:
oder meinst du von außen?
Ja meine ich.
Mal gucken, werds schon irgendwie hinkriegen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
nemored



Anmeldungsdatum: 22.02.2007
Beiträge: 4699
Wohnort: ~/

BeitragVerfasst am: 24.02.2009, 22:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 24.02.2009, 23:20    Titel: Antworten mit Zitat

Mit der WindowsAPI kannst du die Prozedur eines Threads überschreiben, und so ihn zum Beenden zwingen. Ist aber sehr dirty zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 25.02.2009, 01:18    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Nitroxis



Anmeldungsdatum: 27.02.2008
Beiträge: 300
Wohnort: Irgendwo...

BeitragVerfasst am: 26.02.2009, 20:39    Titel: Antworten mit Zitat

Aha ok danke. Dann werde ich wohl "DIM SHARED AS INTEGER terminate" oder soetwas in der art benutzen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 26.02.2009, 20:55    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz