¿Qué tipos de mutexes existen en la biblioteca estándar de C++?
sobes.tech AI
Respuesta de la IA
En la biblioteca estándar de C++ (a partir de C++11) se definen los siguientes tipos de mutex:
-
std::mutex: Mutex básico, no recursivo. Un hilo que lo posee no puede volver a adquirirlo sin liberarlo primero. Intentar volver a adquirirlo desde el mismo hilo conduce a un comportamiento indefinido. -
std::recursive_mutex: Mutex recursivo. Permite que un mismo hilo lo adquiera varias veces. El número de adquisiciones y liberaciones debe coincidir para que el mutex esté disponible para otros hilos. Aumenta los costos en comparación constd::mutex. -
std::timed_mutex: Igual questd::mutex, pero con la capacidad de intentar adquirirlo con un tiempo de espera (try_lock_for,try_lock_until). Es útil para evitar bloqueos mutuos en ciertos casos. -
std::recursive_timed_mutex: Combinación destd::recursive_mutexystd::timed_mutex, permitiendo adquisiciones recursivas con tiempo de espera.
std::shared_mutex (desde C++17) es un mutex con acceso compartido (lectura/escritura), pero no pertenece a los "tipos" básicos de mutex en el mismo sentido que los mencionados anteriormente, aunque se usa para sincronizar el acceso a recursos. Permite que muchos hilos lean simultáneamente, pero solo un hilo pueda escribir.