Estoy muy confundido acerca de la diferencia entre un bloqueo y mutex. En documentos Boost, que dice,¿Cuál es la diferencia entre "mutex" y "lock"?
TiposLock
- plantilla de clase lock_guard
- plantilla de clase unique_lock
- plantilla de clase shared_lock
- plantilla de clase upgrade_lock
- plantilla de clase upgrade_to_unique_lock
- Clase específica de Mutex scoped_tr y_lock
Tipos Mutex
- mutex Clase
- typedef try_mutex
- timed_mutex Clase
- recursive_mutex Clase
- typedef recursive_try_mutex
- recursive_timed_mutex Clase
- shared_mutex Clase
En otro artículo, veo funciones como este,
boost::shared_mutex _access;
void reader()
{
boost::shared_lock<boost::shared_mutex> lock(_access);
// do work here, without anyone having exclusive access
}
void conditional_writer()
{
boost::upgrade_lock<boost::shared_mutex> lock(_access);
// do work here, without anyone having exclusive access
if (something) {
boost::upgrade_to_unique_lock<boost::shared_mutex> uniqueLock(lock);
// do work here, but now you have exclusive access
}
// do more work here, without anyone having exclusive access
}
preguntas Actualizado
- ¿Alguien puede ofrecer algunas aclaraciones entre el "mutex" y " bloquear"?
- ¿Es necesario crear un shared_lock para un shared_mutex? ¿Qué ocurre si creo un unique_lock para un shared_mutex?
- O si creo un shared_lock de un mutex, significa la exclusión mutua puede no puede compartir entre varios hilos?
Puede encontrar mi artículo "¿Cómo funciona un mutex?" también es útil: http://mortoray.wordpress.com/2011/12/16/how-does-a-mutex-work-what-does-it-cost/ –
Esas son preguntas nuevas. Deberías preguntarles en una nueva pregunta. No agrega seguimientos a una pregunta ya existente. Además, todo esto está en la documentación de Boost. –