Paquete | flash.concurrent |
Clase | public final class Mutex |
Herencia | Mutex Object |
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.5, AIR 3.5 |
shareable
es true
). No obstante, una clase Mutex se puede utilizar para gestionar el acceso de los programas de trabajo a cualquier recurso compartido, como una extensión nativa de AIR o un archivo de sistema de archivos. Independientemente del recurso, la finalidad de la clase Mutex es garantizar que solo un conjunto de código accede al recurso cada vez.
Un objeto Mutex gestiona el acceso a partir del concepto de propiedad del recurso. En cualquier momento, un objeto Mutex es “propiedad” de al menos un programa de trabajo. Cuando la propiedad de un objeto Mutex pasa de un programa de trabajo a otro se realiza en una transmisión atómica. Esto garantiza que nunca será posible que más de un programa de trabajo asuma la propiedad del objeto Mutex. Siempre y cuando el código de un programa de trabajo solo se ejecute en un recurso compartido cuando dicho programa de trabajo sea propietario del objeto Mutex, podrá estar seguro de que nunca habrá conflictos entre varios programas de trabajo.
Utilice el método tryLock()
para tomar la propiedad del objeto Mutex si está disponible. Utilice el método lock()
para poner en pausa la ejecución del programa de trabajo actual hasta que el objeto Mutex esté disponible y, a continuación, tome la propiedad del objeto Mutex. Cuando el programa de trabajo actual tenga la propiedad del objeto Mutex, podrá ejecutarse con seguridad en el recurso compartido. Cuando haya finalizado la ejecución, llame al método unlock()
para liberar el objeto Mutex. En este momento, el programa de trabajo ya no debería poder acceder al recurso compartido.
La clase Mutex es uno de los tipos de objeto especiales que comparten programas de trabajo en vez de copiarlo entre ellos. Cuando se transfiere un objeto Mutex de un programa de trabajo a otro, bien llamando al método setSharedProperty()
del objeto Worker o utilizando un objeto MessageChannel, los dos programas de trabajo tienen una referencia al mismo objeto Mutex en la memoria del motor de ejecución.
Elementos de API relacionados
Método | Definido por | ||
---|---|---|---|
Mutex()
Crea una nueva instancia de Mutex. | Mutex | ||
Indica si un objeto tiene definida una propiedad especificada. | Object | ||
Indica si hay una instancia de la clase Object en la cadena de prototipo del objeto especificado como parámetro. | Object | ||
Pone en pausa la ejecución del programa de trabajo actual hasta que el objeto Mutex esté disponible y, a continuación, toma la propiedad del objeto Mutex. | Mutex | ||
Indica si existe la propiedad especificada y si es enumerable. | Object | ||
Establece la disponibilidad de una propiedad dinámica para operaciones de bucle. | Object | ||
Devuelve la representación de cadena de este objeto, con formato según las convenciones específicas de configuración regional. | Object | ||
Devuelve la representación de cadena del objeto especificado. | Object | ||
Adquiere la propiedad del objeto Mutex si está disponible. | Mutex | ||
Libera la propiedad de este objeto Mutex para que cualquier programa de trabajo pueda adquirirlo y llevar a cabo sus tareas en el recurso asociado. | Mutex | ||
Devuelve el valor simple del objeto especificado. | Object |
Mutex | () | Información sobre |
public function Mutex()
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.5, AIR 3.5 |
Crea una nueva instancia de Mutex.
Emite
Error — Si el objeto Mutex no se ha podido inicializar.
|
lock | () | método |
public function lock():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.5, AIR 3.5 |
Pone en pausa la ejecución del programa de trabajo actual hasta que el objeto Mutex esté disponible y, a continuación, toma la propiedad del objeto Mutex. Si otro programa de trabajo abre el objeto Mutex cuando se está llamando al método lock()
, el subproceso de ejecución del programa de trabajo que llama se pone en pausa en la llamada a lock()
y el programa de trabajo se añade a la cola de solicitudes de propiedad. Cuando el programa de trabajo que llama adquiere el objeto Mutex, la ejecución del programa de trabajo continúa con la línea de código que sigue a la llamada a lock()
.
Cuando el programa de trabajo actual tenga la propiedad del objeto Mutex, podrá ejecutarse con seguridad en el recurso compartido. Cuando haya finalizado la ejecución, llame al método unlock()
para liberar el objeto Mutex. En este momento, el programa de trabajo ya no debería poder acceder al recurso compartido.
Internamente, un objeto Mutex lleva el recuento del número de solicitudes de bloqueo que ha recibido. El objeto Mutex debe recibir el mismo número de solicitudes de desbloqueo para poder liberarse completamente. Si el código del programa de trabajo propietario del objeto Mutex lo vuelve a bloquear (llamando al método lock()
), el recuento interno de bloqueos se incrementa en uno. Debe llamar al método unlock()
tantas veces como el número de solicitudes de bloqueo para poder liberar la propiedad del objeto Mutex.
Si hay varios programas de trabajo esperando a un objeto Mutex, este da prioridad a la asignación de propiedad con el programa de trabajo que lleve más tiempo en la cola. No obstante, la programación de los subprocesos de los programas de trabajo la gestiona el sistema operativo del host, por lo que no se puede garantizar ningún orden concreto de ejecución de código en los programas de trabajo.
tryLock | () | método |
public function tryLock():Boolean
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.5, AIR 3.5 |
Adquiere la propiedad del objeto Mutex si está disponible. Si otro programa de trabajo ya es propietario del objeto Mutex o si otro programa de trabajo ha llamado al método lock()
y está esperando para adquirir el objeto Mutex, este no estará disponible. En este caso, llamar a este método devolverá false
y la ejecución del código continuará inmediatamente.
Cuando el programa de trabajo actual tenga la propiedad del objeto Mutex, podrá ejecutarse con seguridad en el recurso compartido. Cuando haya finalizado la ejecución, llame al método unlock()
para liberar el objeto Mutex. En este momento, el programa de trabajo ya no debería poder acceder al recurso compartido.
Si hay varios programas de trabajo esperando a un objeto Mutex, este da prioridad a la asignación de propiedad con el programa de trabajo que lleve más tiempo en la cola. No obstante, la programación de los subprocesos de los programas de trabajo la gestiona el sistema operativo del host, por lo que no se puede garantizar ningún orden concreto de ejecución de código en los programas de trabajo.
Valor devueltoBoolean — Es true si el objeto Mutex estaba disponible (y ahora es propiedad del programa de trabajo actual), o bien es false si el programa de trabajo actual no pudo adquirir la propiedad del objeto Mutex.
|
unlock | () | método |
public function unlock():void
Versión del lenguaje: | ActionScript 3.0 |
Versiones de motor de ejecución: | Flash Player 11.5, AIR 3.5 |
Libera la propiedad de este objeto Mutex para que cualquier programa de trabajo pueda adquirirlo y llevar a cabo sus tareas en el recurso asociado.
Internamente, un objeto Mutex lleva el recuento del número de solicitudes de bloqueo que ha recibido. El código de un programa de trabajo debe llamar al método unlock()
tantas veces como el número de solicitudes de bloqueo para poder liberar la propiedad del objeto Mutex.
Emite
IllegalOperationError — Cuando el programa de trabajo actual no es propietario del objeto Mutex.
|
Tue Jun 12 2018, 02:12 PM Z