Soy nuevo en la programación de multihilo y estoy confundido acerca de cómo funciona Mutex. En el manual Boost :: Thread, indica:Boost, concepto mutex
Los mutexes garantizan que solo un hilo puede bloquear un mutex dado. Si una sección de código está rodeada por un bloqueo y desbloqueo de exclusión mutua, se garantiza que solo un subproceso a la vez ejecuta esa sección de código. Cuando ese hilo desbloquea el mutex, otros hilos pueden entrar a esa región código:
Mi entendimiento es que mutex se utiliza para proteger una sección de código sea ejecutado por varios subprocesos al mismo tiempo, NO proteger el dirección de memoria de una variable. Es difícil para mí captar el concepto, lo que sucede si tengo 2 funciones diferentes tratando de escribir en la misma dirección de memoria.
¿Existe algo como esto en la biblioteca Boost:
- bloquear una dirección de memoria de una variable, por ejemplo, dobles x, bloqueo (x); Entonces que otros hilos con una función diferente no pueden escribir en x.
- hacer algo con x, por ejemplo, x = x + rand();
- de desbloqueo (x)
Gracias.
Creo que podría estar interesado en [memoria transaccional de software] (http://en.wikipedia.org/wiki/Software_transactional_memory), pero eso no existe (de forma nativa) en C++. –