Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Mutex? Oder doch IPC

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.02.2005, 20:13 Uhr
virtual
Sexiest Bit alive
(Operator)


pthread_cond_wait
pthread_cond_signal
pthread_cont_init
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.02.2005, 22:39 Uhr
FunnyDingo



Danke für den Tipp, hat mir sehr weiter geholfen! Aber eine Kleinigkeit gefällt mir nicht. Auf der Seite die ich gefunden habe (Link) steht "Die Funktion pthread_cond_signal weckt dabei einen Wartenden Thread auf. Welcher das ist liegt leider nicht in Ihrer Hand." Ich würde aber schon gerne steuern welcher Thread das Signal bekommt. Nach etwas lesen und testen, habe ich das ganze mit zwei pthread_cond_t und zwei pthread_mutex_t gemacht. Das funktioniert zwar dann (mit nur einem Mutex geht das nicht), aber ist das doch bestimmt nich Sinn der Sache oder? Denn ich müsste ja dann auch jeden der zwei Mutexe locken/unlocken. Oder ist es ligitim das so "auszunutzen"?


Bearbeitung von typecast:

Tag korrigiert


--
"Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral." (John James Osborne)

Meine Website: http://www.funnydingo.de

Dieser Post wurde am 01.03.2005 um 08:03 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
01.03.2005, 06:40 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich fänds legitim
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: