000
28.02.2005, 18:56 Uhr
~FunnyDingo
Gast
|
Hallo zusammen,
ich bin noch nich so super bewandert in C/C++ und habe da mal eine Frage zu. Ich versuche gerade ein Test-Programm zu schreiben, das mit Threads arbeitet. Hab ich bisher auch alles gut verstanden, ebenso die Arbeit mit den Mutex. Aber nun stehe ich vor einem Problem. Ich habe 3 Threads. Nenen wir sie E, V und A (EVA-Prinzip) denn E nimmt Daten entgegen, V verarbeitet sie und A soll sie ausgeben.
Der erste Durchlauf des Programm ist kein Problem. Ich erstelle den E-Thread und locke den Mutex. Dann erstelle ich noch V und A und rufe ebenfalls pthread_mutex_lock auf, was (so wie ich es verstanden habe) dazu führt, das die Threads an dieser Stelle "hängen" bis der Mutex freigeben ist. Nun nimmt E Daten entgegen, schreibt sie in eine Variable und gibt den Mutex frei. Nun tut sich für mich die Frage auf: Wie kann ich steuern das nun:
Schritt 1) V bekommt den Mutex, verarveitet die Daten und gibt den Mutex wieder frei Schritt 2) A bekommt den Mutex, gibt die Daten aus und gibt den Mutex wieder frei Schritt 3) E bekommt den Mutex und behhält ihn bis wieder Daten eintreffen und das ganze geht von vorne los.
Vielleicht habe ich da ja was verpasst? Oder muss ich dann doch mit IPC Message Queues arbeiten? Um dem entsprechenden Thread zu signalisieren: Hey, du bist dran!
Wäre schön wenn jemand nen Tipp oder nen Link mit weiter führenden Material hätte, denn mit dem was ich bisher gelesen habe, stehe ich auf dem Schlauch.
Lg,
Funny |