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?
Es gibt keine Garantie. Sobald der erste Thread die Sperre aufhebt, wird einer der blockierten Threads es bekommen - es ist nicht spezifiziert welcher. –
perfekt, viele Tks für die Antwort! –