| 

.NET C# Java Javascript Exception

4
Es gibt in der Programmierung für das Umsetzen des gegenseitigen Ausschlusses mehrere Ansätze.
Ich kenne das Lock-Variable, Mutex-Variablen und Semaphore.

Verstehe ich das richtig? Lock ist ein einfacher Mechanismus für den gegenseitigen Ausschluss und hat in seiner Struktur nur einen boolschen Wert. Entweder ist ein kritischer Bereich gelockt oder nicht. Ganz einfach.

Mutex-Variablen sind im Prinzip das Gleiche wie Lock-Variablen? Ihre Struktur hat lediglich einige Parameter mehr. Welche und wofür im allgemeinen?

Semaphore erweiteren das Konzept von Mutex-Variablen um die Möglichkeit einen kritischen Bereich mit mehr als einem Thread zu betreten. Eine maximale Anzahl wird gesetzt und der kritische Bereich wird mit Threads aus der Warteschleife mit maximal zu dieser Anzahl befüllt.

Ist dieses Bild richtig? Lock-Mechanismus ist eine Untermenge des Mutex-Mechanismus und dieser ist wiederrum eine Untermenge des Semaphor-Mechansimus. Richtig?
News:
11.08.2014
Parallels 47 4
1 Antwort
3
Wenn du von der Windows API sprichst, dann müßte Lock korrekterweise CriticalSection heißen. Aber im großen und ganzen ist die Betrachtung richtig.

CriticalSection dient nur dazu, Threads innerhalb eines Prozesses zu synchronisieren. Mutex und Semaphore können benannt werden und sind damit über Prozessgrenzen verfügbar. Damit können sie von wildfremden Prozessen verwendet werden. Um die Objekte zu schützen, können diese wiederum mit Security-Attributen und Access Properties versehen werden, damit sie eben nicht jeder belegen oder freigeben kann. Diese Eigenschaften sind die selben wie bei Dateien, Ordnern und vielen anderen Objekten.

Eine CriticalSection ist in jedem Fall schneller selbst als ein unbenannter Mutex, daher sollte man diese Art der Synchronization nutzen, wenn ein Mutex nicht notwendig ist.
11.08.2014
BeachBlocker 617 3
Hey, danke für die Antwort! Hilft mir ein wenig weiter. Allerdings beziehe ich mich nicht auf eine konkrete API, sondern eher auf das Konzept an sich. Ich versuche heraus zu finden, wann ich die einfachen Locks einsetze und wann ein Lock zu wenig ist und mit Mutex-Variablen gearbeitet werden muss. Im Großen und Ganzen hast Du mir aber schon eine ganz gute Richtung gegeben. Thx. Iregndwie bekommt man hier nur sehr schwerlich eine Antwort :/
Parallels 12.08.2014
Liegt wahrscheinlich daran, dass Du schon sehr spezielle Fragen hast ;-)
muffi 13.08.2014

Stelle deine Parallel-Frage jetzt!