Forum: PC-Programmierung Multicore Programmierung


von fresh (Gast)


Lesenswert?

Hi

Ich bin gerade dabei ein Buch von IntelPress mit den Titel "Multicore 
Programmierung" zu lesen und bei einen Beispiel verstehe ich die 
verwendung der Mutexe nicht ganz. Das Beispiel ist in Listing 5.13 auf 
Seite 121 zu finden falls jemand das Buch hat. Irgendwie schliesen sich 
in einen Augen die drei Threads durch das sperren des Mutex gegenseitig 
aus aber anscheinend tun sie das nicht. Falls jemand das Buch zuhause 
hat kann er ja bitte nachsehen und mir das erklären?! Den Code reiche 
ich noch nach. Es gibt in den Beispiel einen Hauptthread welcher zwei 
weitere Threads erzeugt. in den beiden Threads wird als erste Schritt 
ein Mutex gesperrt mit pthread_mutex_lock. Nachdem beide das selbe Mutex 
sperren sollte doch ein thread das Mutex erhalten und der zweite bei den 
Befehl blokieren und erst weiterkommen wenn der vorige das Mutex wieder 
frei gibt oder? Aber anscheinend ist es nicht so und so sperrt der 
Hauptthread nach den starten der beiden anderen Threads auch noch mal 
das Mutex. Und laut Beschreibung ist es so als ob aller drei das Mutex 
bekommen?!

Mfg fresh

von Rolf Magnus (Gast)


Lesenswert?

Ich hab das Buch nicht, aber:

fresh schrieb:
> Nachdem beide das selbe Mutex sperren sollte doch ein thread das Mutex
> erhalten und der zweite bei den Befehl blokieren und erst weiterkommen
> wenn der vorige das Mutex wieder frei gibt oder?

Ja, das ist die Idee bei Mutexes.

> Aber anscheinend ist es nicht so und so sperrt der Hauptthread nach den
> starten der beiden anderen Threads auch noch mal das Mutex.

Kann er ja tun.

> Und laut Beschreibung ist es so als ob aller drei das Mutex bekommen?!

Ja, aber die müssen das Ding doch auch irgendwann wieder freigeben, oder 
tun sie das nicht?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.