Sobes.tech
Middle

¿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 con std::mutex.

  • std::timed_mutex: Igual que std::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 de std::recursive_mutex y std::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.