Zitat von
Schwedenbitter:
Zitat von
alzaimar:
Was ist denn bei dem Code von sirius, wenn man mehrere Threads startet?
Eigentlich sollte es auch mit mehreren Threads funktionieren. Wird einer gestartet, dann erhöht sich der Zähler um 1. Wird einer beendet, dann reduziert er sich wieder um 1. Macht im Ergebnis Null, wenn alle beendet sind. Dabei spielt es keine Rolle, in welcher zeitlichen Abfolge die Threads ablaufen.
Man muss meiner Meinung nach nur dafür sorgen, dass man bei den Terminated-Abfragen vor dem Beenden mitten im Thread auch eins runter zählt. Dann sollte es doch stimmen,
oder?
Denn die Funktion IsRunning prüft nur, ob der Zähler Null ist.
Ja das ist auch wieder richtig. Ich meinte ja: Je nach Anwendungsfall.
Ein Problem kriegt man z.B. mit dieser Variante, wenn deine Threads mit "freeonterminate=TRUE" laufen. Dann werden sie automatisch aus dem Speicher entfernt:
Wenn z.b ThreadInstanz1 bereits fertig ist und ThreadsInstanz2 noch läuft dann gibt dir "isRunning" True zurück und wenn du dann ThreadInstanz1.waitfor aufrufst, kriegts du eine Zugriffsverletzung.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.