KillThread()

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

KillThread()

Beitrag von nco2k »

in der hilfe steht :
...Das Problem ist, dass der Thread umgehend entfernt wird und keine Chance hat, irgendwelchen "Aufräumcode" (z.B. Speicher freigeben, Einträge freigeben, De-Allokieren seines eigenen Stacks) auszuführen...
aber wenn das hauptprogramm dann irgendwann später endet, wird doch trotzdem wieder alles freigegeben inkl. den thread resten oder nicht??

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag von Laurin »

Ja, soweit ich weiß, wird alles wieder auf Normal-Zustand zurückgesetzt, wenn das Programm beendet wird.

Im Zweifelsfall End benutzen ;)
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

Jap, die Ressourcen werden dann von den einzelnen PB Libs wieder frei
gegeben. Diese Tatsache hat mich mal lange bei der Programmierung
einer Userlib zappeln lassen :mrgreen:. Ich wollte beim Ende des Programms
eigenständig alle Speicherbereiche, die meine Userlib reserviert hat
wieder frei geben. Das führte aber immer wieder zu Speicherverletzungen.
Mir ist dann wieder eingefallen, dass PB selbst ja den Speicher wieder
frei gibt. Hab die FreeMemory() Befehle aus der Lib gelöscht und schon
funktionierte alles wie es sollte.

Allerdings würde ich an deiner Stelle alle reservierten Ressourcen in
einer Linked List speichern und wenn ein KillThread durchgeführt wird,
werden alle Elemente in der Liste durchgegangen, nach dem Typ ge-
schaut und dann den entsprechenden Free*() Befehl ausführen. Dann
verbraucht dein Programm nicht so viel Speicher
Bild
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

CreateThread()

Beitrag von AND51 »

Da das Thema ja nun vollendet ist, kann ich doch sicherlich was fragen, um nicht einen neuen Thread zu eröffnen.

CreateThred()
Welche Möglichkeiten gibt es, Werte zu returnen, also zurückzugeben?
ProcedureReturn funktioniert ja nicht und wenn, würde es den Thread, bzw. die Prozedur beenden (steht in der Hilfe).
Kann ich Werte oder String mittels globaler Variablen zurückgeben? Das geht bei mir nciht so recht, oder (was ich nicht glube) ich mache etws falsch. Arrays sind immer global und so gebe ich zur Zeit immer Werte über ein Array zurück. Gibt es nicht eine elegantere Methode?
In meiner Not habe ich einmal den Inhalt der Zwischenablage in eine Variable gepackt, Werte aus einem Thread in die Zwischenablage gepackt, und nach dem auslesen der in der Zwischenablage zurückgegebenen Werte den ursprünglichen Inhalt der zwischenablage wiederhergestellt... :oops:
Und via InitNetwork() Daten ans eigene Programm zu schicken will ich auch nicht...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Antworten