¿Qué es un MUTEX?

Un objeto de exclusión mutua, o MUTEX, es un objeto creado para su uso en programas informáticos. La función esencial de MUTEX es hacer posible que un subproceso de programa múltiple haga uso de un solo recurso. Generalmente, la funcionalidad de los objetos de exclusión mutua es permitir este uso de un solo recurso mediante la creación de un entorno en el que el acceso al recurso se transfiere continuamente entre los diversos aspectos del programa.

El proceso de activación y creación de un MUTEX tiene lugar cuando se abre la aplicación del programa informático. Esencialmente, el programa creará el MUTEX y lo relacionará con un recurso específico que se necesita para la función eficiente del programa abierto. A medida que se solicitan los recursos, el sistema operativo asignará un nombre único al MUTEX y lo usará para identificar el proceso mientras el programa permanezca abierto.

Una vez activado el MUTEX y nombrado para la sesión, cualquier otro hilo del programa que requiera este recurso puede tener acceso, aunque el recurso ya esté en uso activo por otro hilo. Al indicar la necesidad del recurso, la función MUTEX comenzará a alternar el acceso del recurso entre los subprocesos. Para el usuario final, este proceso es transparente. A todos los efectos prácticos, parece que dos usuarios o dos hilos nos están haciendo del mismo recurso simultáneamente.

Si bien la velocidad de la transferencia de acceso es tan rápida que ni siquiera es perceptible para el usuario final, debe tenerse en cuenta que siempre que un recurso está en uso, está efectivamente bloqueado en un subproceso de la secuencia. Otro hilo que requiera el uso del recurso emitirá una solicitud que entrará en una cola y permanecerá allí hasta que el primer hilo haya terminado con el uso activo. En ese momento, el recurso se desbloquea y la función MUTEX permite el acceso activo del siguiente hilo de la cola. Si un tercer hilo está activo y necesita el recurso, MUTEX también alineará este hilo en la cola y otorgará acceso de forma rotativa.