Avatar ·

std::unique_lock vs std::lock_guard: qué elegir para un mutex en C++?

¡Hola! Empecé a estudiar multithreading en C++11 y me confundí al elegir entre std::unique_lock y std::lock_guard. Ambas clases se usan para bloquear un mutex, pero no entiendo en qué casos aplicar cada una. Por ejemplo, estoy escribiendo un contador thread-safe simple: ```cpp #include #include #include std::mutex mtx; int counter = 0; void increment() { for (int i = 0; i < 100000; ++i) { // ¿Qué es mejor aquí? std::lock_guard lock(mtx); // o std::unique_lock lock(mtx); ++counter; } } ``` Ambas opciones compilan y funcionan. Pero he oído que unique_lock es "más pesado". ¿Cuándo debería usarlo? ¿Hay situaciones donde lock_guard no es adecuado? ¿Y por qué en la biblioteca estándar hay dos clases similares? Explíquenlo, por favor, con ejemplos. ¡Gracias de antemano por la ayuda! <<>>

Respuesta breve

Usa std::lock_guard