Mutex y semáforo
Mutex vs semáforo
Un mutex es análogo a una sola llave de una habitación. Una persona que tiene la llave, que es análoga a un hilo, es la única que puede tener acceso a la habitación. La persona con el acceso tendrá que entregar la clave a la siguiente persona en la fila. Por lo tanto, un mutex solo puede ser liberado por el hilo que lo adquiere.
Un mutex se usa normalmente para serializar el acceso a una sección de un código de reentrante ‘“ una clase de código que no puede ser ejecutado por varios hilos a la vez. Sólo se permite un solo hilo en una sección. Esto obliga a los otros hilos en cola a esperar. Antes de que un hilo obtenga acceso, tendrá que esperar hasta que el hilo abandone la sección.
Usando la misma analogía en el mutex, los semáforos son el número de claves similares que pueden acceder al mismo número de habitaciones con cerraduras similares. Un semáforo o el valor de un recuento de semáforos dependerá de la cantidad de personas (subprocesos) que entran o salen de la sala. Si hay 5 habitaciones y todas están ocupadas, entonces el recuento de semáforos es cero. Si dos salen de la habitación, entonces el conteo es dos y las dos claves se asignan a las dos siguientes en la cola.
Dicho esto, los semáforos pueden ser señalados simultáneamente por cualquier hilo o proceso y son ideales para aplicaciones que requieren sincronización. Sin embargo, los semáforos se utilizan para restringir efectivamente el número de usuarios concurrentes de un recurso común en función del recuento máximo de semáforos.
Básicamente, un mutex puede considerarse como un semáforo que tiene un valor de uno.
La disminución y el incremento del semáforo dependen de si los subprocesos solicitan acceso al recurso común o abandonan la sección.
En teoría, los semáforos mutex y (binarios) son semánticamente similares. La implementación del mutex se puede realizar utilizando semáforos y, por lo tanto, es lo contrario. Sin embargo, en el sentido práctico, pueden ser un poco diferentes.
Los mutexes están destinados a ser aplicados solo para la exclusión mutua y los semáforos binarios están destinados a ser utilizados para la exclusión mutua y la notificación de eventos. Aunque son muy similares en términos de implementación y semántica general, se utilizan de manera diferente.
Resumen:
1. Mutex se usa normalmente para serializar el acceso a un recurso común, mientras que un semáforo es un número de accesos concurrentes.
2. Mutex es como un semáforo con un conteo de uno. 3. Mutex solo permite que un solo hilo tenga acceso, mientras que los semáforos pueden ser señalados simultáneamente por cualquier hilo o proceso.
4. Los semáforos son ideales para la sincronización y, a menudo, se utilizan para la notificación de eventos y la exclusión mutua, mientras que el mutex solo se aplica para la exclusión mutua.