2016-10-29 4 views
0

Ich habe eine (recht einfach) Frage zu std::mutex in C++ 11:Mutex Verriegelungs um C++ 11

Angenommen 6 Fäden wollen das gleiche Mutex verriegeln std::lock_guard verwenden. Thread 1 fragt nach dem Schloss, danach Thread 2 tut dasselbe, usw., bis alle 6 von ihnen nach dem Schloss gefragt haben. Der erste Thread, der die Sperre erhält, blockiert die 5 anderen Threads, bis die Sperre für jede von ihnen verfügbar ist.

Nun werden die 5 anderen Threads das Schloss in der Reihenfolge empfangen, in der sie danach gefragt haben? Auch wenn sie alle danach gefragt haben, können wir annehmen, dass Thread 2 der nächste ist, der das Lock erhält, oder einer der Threads verhungern kann?

+1

Es gibt keine Garantie. Sobald der erste Thread die Sperre aufhebt, wird einer der blockierten Threads es bekommen - es ist nicht spezifiziert welcher. –

+0

perfekt, viele Tks für die Antwort! –

Antwort

0

Sie erhalten den Mutex in einer undefinierten Reihenfolge.