std::unique_lock vs std::lock_guard: que choisir pour un mutex en C++?
Salut ! J'ai commencé à étudier le multithreading en C++11 et je suis confus quant au choix entre std::unique_lock et std::lock_guard. Les deux classes sont utilisées pour verrouiller un mutex, mais je ne comprends pas dans quels cas utiliser l'une ou l'autre.\n\nPar exemple, j'écris un simple compteur thread-safe :\n\n```cpp\n#include \n#include \n#include \n\nstd::mutex mtx;\nint counter = 0;\n\nvoid increment() {\n for (int i = 0; i < 100000; ++i) {\n // Qu'est-ce qui est mieux ici ?\n std::lock_guard lock(mtx);\n // ou\n std::unique_lock lock(mtx);\n ++counter;\n }\n}\n```\n\nLes deux options se compilent et fonctionnent. Mais j'ai entendu dire que unique_lock est "plus lourd". Quand faut-il l'utiliser ? Y a-t-il des situations où lock_guard ne convient pas ? Et pourquoi dans
No answers yet.
Connectez-vous pour laisser une réponse
Blogs
API GraphQL avec C# : tutoriel étape par étape pour les développeurs .NET