* monitores: Un monitor es una construcción de sincronización que garantiza que solo un hilo pueda acceder a una sección crítica de código a la vez. Es una forma de prevenir las condiciones de carrera y la corrupción de datos cuando múltiples hilos necesitan compartir recursos.
* hilos: Los hilos son unidades de ejecución independientes dentro de un proceso. Pueden ser creados y administrados por el sistema operativo.
Cómo interactúan:
1. Adquiriendo el bloqueo: Cuando un hilo necesita acceder a un recurso compartido, debe adquirir el bloqueo del monitor.
2. Acceso exclusivo: Una vez que un hilo ha adquirido el bloqueo, tiene acceso exclusivo a la sección crítica. Otros hilos que intentan adquirir la cerradura se bloquearán hasta que el primer hilo lo libere.
3. Liberando el bloqueo: Cuando el hilo está terminado con la sección crítica, libera el bloqueo. Otro hilo puede adquirir el bloqueo y continuar la ejecución.
Punto clave: Un hilo no contiene múltiples monitores a la vez. Puede adquirir múltiples cerraduras, una a la vez, pero solo puede contener un bloqueo a la vez.
Ejemplo:
Imagine dos hilos, el hilo A y el hilo B, lo que necesita acceder a la misma cuenta bancaria.
* Hilo A quiere depositar dinero.
* El hilo B quiere retirar dinero.
Se utiliza un monitor para proteger el saldo de la cuenta bancaria:
1. El enhebrado A adquiere el bloqueo del monitor.
2. El hilo A realiza la operación de depósito.
3. El hilo A libera el bloqueo.
4. El subproceso B adquiere el bloqueo del monitor.
5. El hilo B realiza la operación de retiro.
6. El hilo B libera el bloqueo.
Esto evita que ambos hilos modifiquen el saldo de la cuenta simultáneamente, asegurando la consistencia de los datos.
¡Avísame si tienes alguna otra pregunta!