Frage

Mutexes werden verwendet, um kritische Abschnitte zu schützen. Nehmen wir an, auf einem Mutex wurde bereits ein Down erledigt, und während der Thread, der dies getan hat, im CS, sind 10 andere Fäden direkt dahinter und machen einen Down auf dem Mutex, um sich in den Schlaf zu bringen. Wenn der erste Thread den kritischen Abschnitt verlässt und einen auf dem Mutex aufsteigt, wachen alle 10 Threads auf und nutzen Sie einfach, was sie tun wollten, nämlich den kritischen Abschnitt? Würde das dann nicht bedeuten, dass alle 10 gleichzeitig im kritischen Abschnitt enden könnten?

War es hilfreich?

Lösung

Nicht nur eines Thread wacht auf und übernimmt die Besitzung des Mutex. Der Rest von ihnen bleibt schlafen. Welcher Faden ist derjenige, der aufwacht, normalerweise nicht deterministisch.

Die obige ist eine Verallgemeinerung und die Details der Implementierung werden in jedem System unterschiedlich sein. Zum Beispiel in Java vergleichen Objekt#benachrichtigen () und Objekt#NotifyAll ().

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top