Buchempfehlung
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Mikrocomputertechnik mit Controllern der Atmel AVR-RISC-Familie
Umfassend, aber leicht verständlich führt dieses Buch in die Programmierung von ATMEL AVR Mikrocontrollern ein. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Referenz - THREADDETACH

Referenz-Navigation

 

Syntax: THREADDETACH handle
Typ: Anweisung
Kategorie: Multithreading

Anmerkung:
Um diese Anweisung nutzen zu können, muss die Datei fbthread.bi in Ihren Quellcode eingebunden werden, z. B. mit BefehlsreferenzeintragINCLUDE.

THREADDETACH gibt die Ressourcen einer Prozedur frei, die durch BefehlsreferenzeintragTHREADCREATE oder BefehlsreferenzeintragTHREADCALL als eigener Thread gestartet wurde. Der Handle zu diesem Thread wird zerstört und kann nicht weiter genutzt werden.

'handle' ist ein Wert vom Typ BefehlsreferenzeintragANY PTR, der von THREADCREATE bzw. THREADCALL zurückgegeben wurde.

Anders als BefehlsreferenzeintragTHREADWAIT wartet THREADDETACH nicht auf die Beendigung des Threads. Die Ausführung des Threads wird unabhängig fortgesetzt. Alle zugewiesenen Ressourcen werden freigegeben, sobald der Thread beendet wird.

Um Speicherlecks zu vermeiden, besteht die sichere Möglichkeit zur Beendigung eines Threads darin, ihm zu signalisieren, dass er beendet werden muss, und dann mit THREADWAIT auf die Beendigung zu warten, es sei denn, THREADDETACH wurde zuvor aufgerufen.

Achtung: Da THREADDETACH den Thread-Handle zerstört, kann THREADWAIT nicht mehr auf das Ende des Threads warten. Die Verwendung von THREADWAIT kann dann u. U. das Programm zum Absturz bringen. THREADWAIT und THREADDETACH können daher nicht gemeinsam eingesetzt werden. BefehlsreferenzeintragMutexe und BefehlsreferenzeintragCONDs können aber auch mit bereits freigegebenen Threads verwendet werden.

Beispiel:

#INCLUDE"fbthread.bi"

SUB mythread (BYVAL parameter AS ANY PTR)
  PRINT "Hallo!"
END SUB

DIM AS ANY PTR thread = THREADCREATE(@mythread)
THREADDETACH thread
SLEEP 1

THREADDETACH THREADCREATE(@mythread)
SLEEP

Unterschiede zu QB: neu in FreeBASIC

Plattformbedingte Unterschiede:

Unterschiede zu früheren Versionen von FreeBASIC: existiert seit FreeBASIC v1.00.0

Unterschiede unter den FB-Dialektformen:
In der Dialektform Befehlsreferenzeintrag-lang qb steht THREADDETACH nicht zur Verfügung.

Siehe auch:
BefehlsreferenzeintragTHREADCREATE, BefehlsreferenzeintragTHREADCALL, BefehlsreferenzeintragTHREADWAIT, BefehlsreferenzeintragMultithreading


Zusätzliche Informationen und Funktionen
  • Der Referenzeintrag wurde am 25.08.2020 von Redakteurnemored angelegt.
  • Die aktuellste Version wurde am 27.08.2020 von Redakteurnemored gespeichert.
  Versionen Versionen