[Python-de] Thread ein 2. Mal starten

"Martin v. Löwis" martin at v.loewis.de
Mo Mär 26 21:18:37 UTC 2007


> Es kann ja aber auch nicht der Sinn sein, jedesmal eine neue Instanz der
> Klasse zu erzeugen, wenn der Thread gestartet werden soll, oder? 

Doch, genau das ist der Sinn.

> Welche
> Intention steckt also hinter diesem Design? Aus der Doku geht nicht
> hervor, das ein Thread nicht neugestartet werden darf, wenn er beendet
> wurde.

Ein Thread *kann* auf Betriebssystemebene nur einmal gestartet werden.
Wenn er das nächste Mal gestartet wird, ist es ein anderer Thread.
Jeder Thread hat eine Thread-Id, die einmalig ist und für jeden
anderen Thread anders ist.

Die Python-Thread-Klasse folgt diesem Modell. Wenn man für ein 
Thread-Objekt .join() ausführt, dann meint man damit den eindeutigen,
einmaligen Betriebssystem-Thread. Nachdem der Thread zuende ist,
muss .join() sofort wiederkehren. Diese Semantik wäre verletzt,
wenn das gleiche Python-Thread-Objekt nacheinander verschiedene
Threads repräsentieren würde.

Ciao,
Martin