PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pthread | mutex und generelle fragen



navi
01-11-2004, 12:46
Also da waere einmal:
zaehlt bei pthreads das programm was gestartet wird auch schon als thread, dem ich das Zugreifen von daten per mutex verbieten kann?
Und dann:
ich verstehe den Zusammenhang zwischen der Daklaration von so einer Mutexvariable und dem Objekt dass es schuetzen soll noch net.


pthread_mutex_t mutex1 = PTHREAD_MUTEX_INITIALIZER;
int counter = 0;
int a = 0;

Soll das heissen dass hier nur die Variable counter geschuetzt wird und a nicht mehr oder?
Waere schoen wenn ihr mich da mal aufklaeren koenntet.

anda_skoa
01-11-2004, 22:59
Also da waere einmal:
zaehlt bei pthreads das programm was gestartet wird auch schon als thread, dem ich das Zugreifen von daten per mutex verbieten kann?

Davon würde ich mal ausgehen.



Soll das heissen dass hier nur die Variable counter geschuetzt wird und a nicht mehr oder?


Der Mutex schützt ziemlich sicher nichts durch seine bloße Deklaration.
Normalerweise muss der Thread vor eintreten in eine kritische Sektion den Mutex anfordern (lock) und kann dann sicher sein, dass kein anderer ebenfalls den Mutex "bekommt".
Wenn er den kritischen Bereich wieder verläßt, gibt er den Mutex wieder frei (release oder unlock)

Vermutlich gibt es für diese beiden Operation in der pthread API zwei Funktionen, die den zu bearbeitenden Mutex als Parameter nehmen.

Ciao,
_

panzi
05-11-2004, 02:00
man pthread_mutex_lock (http://unixhelp.ed.ac.uk/CGI/man-cgi?pthread_mutex_lock)