Diferencia entre mutex y semáforo

Diferencia entre mutex y semáforo

Mutex vs semáforo

Un mutex es análogo a una sola llave para una habitación. Una persona que sostiene 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 renunciar a la clave a la siguiente persona en la fila. Por lo tanto, un hilo solo puede liberar un mutex que lo adquiere.

Un mutex se usa normalmente para serializar el acceso a una sección de un código reentrante "" un tipo de código que no puede ser ejecutado por varios hilos a la vez. Solo se permite un solo hilo en una sección. Esto obliga a los otros hilos en la cola a esperar. Antes de que un hilo gana el acceso, tendrá que esperar hasta el hilo antes de que renuncie a la sección.

Usando la misma analogía en 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á del número de personas (hilos) que ingresan o salgan de la habitación. 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 recuento es dos y las dos teclas se dan a los siguientes dos 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 basado en el recuento máximo de semáforos.

Entonces, 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 hilos solicitan acceso al recurso común o salen de la sección.

En teoría, los semáforos mutex y (binarios) son semánticamente similares.La implementación del mutex se puede hacer utilizando semáforos y también lo es al revés. Sin embargo, en el sentido práctico, pueden ser un poco diferentes.

Los mutexes están destinados a aplicarse solo para exclusión mutua y los semáforos binarios están destinados a usarse 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 usan de manera diferente.

Resumen:

1. Mutex se usa típicamente para serializar el acceso a un recurso común, mientras que un semáforo es una serie de accesos concurrentes.

2. Mutex es como un semáforo con un recuento 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 usan para la notificación de eventos y la exclusión mutua, mientras que Mutex solo se aplica para la exclusión mutua.