Avatar ·

std::unique_lock vs std::lock_guard: Was für einen Mutex in C++ wählen?

Hallo! Ich habe angefangen, Multithreading in C++11 zu lernen und bin verwirrt bei der Wahl zwischen std::unique_lock und std::lock_guard. Beide Klassen werden zum Sperren eines Mutex verwendet, aber ich verstehe nicht, in welchen Fällen man welche anwenden soll. Zum Beispiel schreibe ich einen einfachen threadsicheren Zähler: ```cpp #include #include #include std::mutex mtx; int counter = 0; void increment() { for (int i = 0; i < 100000; ++i) { // Was ist hier besser? std::lock_guard lock(mtx); // oder std::unique_lock lock(mtx); ++counter; } } ``` Beide Varianten kompilieren und funktionieren. Aber ich habe gehört, dass unique_lock "schwerer" ist. Wann sollte man es verwenden? Gibt es Situationen, in denen lock_guard nicht geeignet ist? Und warum gibt es in der Standardbibliothek zwei ähnliche Klassen? Erklären Sie bitte anhand von Beispielen. Vielen Dank im Voraus für Ihre Hilfe! <<>>

Kurze Antwort

Verwenden Sie std::lock_guard