Putting einen thread schlafen, bis Ereignis X Eintritt

Ich bin das schreiben, um viele Dateien in einer Multithread-Anwendung und ich bin momentan dabei, einen handler pro file. Ich habe HandlerFactory-Klasse, verwaltet die Verteilung dieser Handler. Was ich tun möchte, ist, dass

thread Anfragen und bekommt foo.txt's Datei-handle aus der HandlerFactory-Klasse

thread B fordert foo.txt's Datei-handler

handler-Klasse erkennt, dass dieser Datei-handle wurde ausgecheckt

handler-Klasse legt, den Faden zu schlafen

thread B schließt Datei-handle, das mit einem wrapper-Methode von HandlerFactory

HandlerFactory benachrichtigt sleeping-threads

thread B wird aktiviert und erfolgreich wird foo.txt's Datei-handle

Dies ist, was ich habe, so weit,

def get_handler(self, file_path, type):
    self.lock.acquire()
    if file_path not in self.handlers:
        self.handlers[file_path] = open(file_path, type)
    elif not self.handlers[file_path].closed:
        time.sleep(1)
    self.lock.release()
    return self.handlers[file_path][type]

Ich glaube, das deckt die Schlaf-und hf Abruf erfolgreich, aber ich bin nicht sicher, wie Sie aufwachen, werden alle threads, oder noch besser aufwachen einen bestimmten thread.

InformationsquelleAutor tipu | 2010-05-10
Schreibe einen Kommentar