|
|
|
|
- Presentación
- Principio
- ¿Cómo implementar un mutex?
- Etapas:
- Observaciones
- Funciones de gestión de mutex
Gestionar la exclusión mutua en subprocesos
Las exclusiones mutuas (Mutex) limitan la ejecución simultánea de un código (procedimiento, línea de código, etc.) a un solo subproceso en un momento dado. Un Mutex se puede compartir entre varias aplicaciones. Observación: Existen otros sistemas que permiten proteger una sección de código: - los semáforos limitan la ejecución simultánea de un código (procedimiento, línea de código, etc.) a uno o más subprocesos en un momento dado. Un semáforo se puede compartir entre varias aplicaciones.
- las secciones críticas limitan la ejecución simultánea de un código (procedimiento, línea de código, etc.) a un hilo en un momento dado en una sola aplicación.
El mutex se crea con la función MutexCreate. - El subproceso n°1 ejecuta la función MutexStart: no hay ningún subproceso en el mutex.
- El subproceso n°1 ejecuta la sección de código protegida por el mutex.
- Mientras que el subproceso n°1 ejecuta el código protegido por el mutex, el subproceso n°2 ejecuta la función MutexStart: dado que el subproceso n°1 está ejecutando el código protegido por el mutex, el subproceso n°2 debe esperar a que se libere el mutex.
- El subproceso n°1 ejecuta la función MutexEnd: ningún otro subproceso ejecuta el código del mutex.
- El subproceso n°2 puede ejecutar el código protegido por el mutex.
- El subproceso n°2 ejecuta la función MutexEnd: ningún otro subproceso ejecuta el código del mutex.
¿Cómo implementar un mutex? Etapas: Las etapas para implementar un mutex son las siguientes: - Crear un mutex con la función MutexCreate. El mutex se asocia a un nombre.
- Llamar a la función MutexStart antes de la sección de código que se va a proteger.
- Llamar a la función MutexEnd para delimitar la sección de código que se va a proteger. Las líneas de código que se encuentran después de MutexEnd no se protegerán.
- Destruir el mutex con la función MutexDestroy.
Observaciones - Las secciones de código protegidas por un mutex deben ser lo más cortas posible y tratar solo los procesos "críticos".
- Cuando hay un subproceso en espera, no se utilizan los recursos del procesador.
- Los mutex se utilizan tanto en el subproceso principal como en los secundarios (creados con la función ThreadExecute). Se debe evitar bloquear el subproceso principal. Si se bloquea el subproceso principal (en espera), no se puede ejecutar la aplicación.
- Las funciones MutexStart y MutexEnd deben utilizarse en el mismo proceso (en un procedimiento, por ejemplo).
- Un mutex se puede compartir o no entre las aplicaciones ejecutadas en el equipo. Al crear los mutex, se debe especificar su uso compartido (función MutexCreate).
Funciones de gestión de mutex Las siguientes funciones WLanguage permiten gestionar los mutex:
| | MutexCreate | Crea explícitamente un mutex. | MutexDestroy | Destruye explícitamente un mutex. | MutexEnd | Señales de que el hilo libera el mutex. | MutexStart | Bloquea el actual Thread mientras espera que se libere el mutex. |
Esta página también está disponible para…
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|