Utiliza un mutex para garantizar que solo un hilo de ejecución pueda acceder a algo. Por ejemplo, si desea actualizar una lista que potencialmente puede ser utilizado por múltiples hilos, que tendría que utilizar un mutex:
acquire mutex
update list
release mutex
Con un mutex, sólo un hilo a la vez puede ser la ejecución de la "lista de actualización ".
Utiliza un evento de restablecimiento manual si desea que varios subprocesos esperen a que suceda algo antes de continuar. Por ejemplo, comenzó varios subprocesos, pero están pausados esperando algún otro evento antes de que puedan continuar. Una vez que ocurre ese evento, todos los hilos pueden comenzar a ejecutarse.
El hilo principal podría tener este aspecto: Código
create event, initial value false (not signaled)
start threads
do some other initialization
signal event
Cada hilo de sería:
do thread initialization
wait for event to be signaled
do thread processing
¿cuál es un valor inicial del mutex: señalizado o no señalizado? – yeap
@yeap: en casi todos los casos, incluido este, desea crear el mutex para que no se adquiera inicialmente. –
Una diferencia importante es que un mutex se puede bloquear repetidamente por el mismo hilo (es "recursivo") mientras que un evento se puede usar para implementar el bloqueo no recursivo. –