Seite 1 von 1

Probleme beim Aufwecken eines Threads

Verfasst: Freitag 2. Juni 2006, 12:34
von Robinho
Hallo,

ich beschäftige mich zurzeit mit Python-Threads und kriege trotz tagelanger Experimente einen schlafenden Thread nicht mehr geweckt!

Ich würde mich riesig freuen, wenn mir einer von Euch weiterhelfen könnte!

Erklärung zum Code:
2 Threads werden gestartet. Der 1. Thread legt sich schlafen (Methode sleep()), der 2. soll ihn wieder aufwecken (Methode wake()).

Code: Alles auswählen

import threading
threadanzahl=2
counter = 0

class Counter(threading.Thread):
    def __init__(self):
        threading.Thread.__init__(self)
        self.Condition = threading.Condition()

    def run(self):
        global counter
        self.lock.acquire()
        counter += 1
        if counter == 1:
            Counter.sleep(self)
        else:
            Counter.wake(self)
        self.lock.release()

    def sleep(self):
        self.Condition.acquire()
        print "gehe schlafen"
        self.Condition.wait()
        print "bin wider wach"
        self.Condition.release()

    def wake(self):
        self.Condition.acquire()
        print "wecke auf"
        self.Condition.notify()
        self.Condition.release() 

thread = {}
for i in range(1,threadanzahl+1):
    thread[i] = Counter()    
    thread[i].start()

for i in range(1,threadanzahl+1):      
    thread[i].join()

print "done"
Vielen Dank für die Mühe!

Re: Probleme beim Aufwecken eines Threads

Verfasst: Freitag 2. Juni 2006, 22:43
von BlackJack
Robinho hat geschrieben:Erklärung zum Code:
2 Threads werden gestartet. Der 1. Thread legt sich schlafen (Methode sleep()), der 2. soll ihn wieder aufwecken (Methode wake()).
Der erste legt sich schlafen und der zweite weckt sich selbst auf.

Und statt ``Counter.methode(self)`` schreibt man besser ``self.methode()``.

Verfasst: Samstag 3. Juni 2006, 10:24
von Robinho
vielen Dank für diesen Hinweis, läuft jetzt :)