Condición del objeto
Objeto de variable de condición
Las variables de condición son un mecanismo que utiliza variables globales compartidas entre fibras para sincronizar. Incluye principalmente dos acciones: 1) Un hilo espera que se establezca una determinada condición y se suspende; 2) Otro hilo hace que se establezca la condición Y notifique a la fibra que espera que se ejecute a la baja.
Para evitar la competencia, cada variable de condición necesita la cooperación de un Lock (el Lock se puede crear y pasar explícitamente por sí mismo, o puede ser creado por fibjs para usted)
Al usar variables de condición, se puede usar una variable de condición para controlar la conmutación de un lote de fibras;
Los siguientes son dos ejemplos de programación de fibra:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21var coroutine = require("coroutine");
var cond = new coroutine.Condition();
var ready = false;
var state = "ready";
function funcwait() {
cond.acquire();
while (!ready)
cond.wait();
state = "go"
cond.release();
}
coroutine.start(funcwait);
cond.acquire();
console.log(state)
ready = true;
cond.notify();
coroutine.sleep();
console.log(state);
dará salida:
1
2ready
go
Herencia
Constructor
Condition
Constructor de variable de condición (el bloqueo requerido por la variable de condición es construido internamente por fibjs)
1new Condition();
Constructor de variables de condición
1new Condition(Lock lock);
Parámetros de llamada:
- lock : Lock , use un bloqueo de construcción propia
Función miembro
wait
Ponga la fibra en estado de bloqueo
1Condition.wait();
notify
Notificar una fibra bloqueada (la que se unió al último grupo de fibras) para continuar la ejecución hacia abajo
1Condition.notify();
notifyAll
Notifique a todas las fibras bloqueadas para continuar la ejecución hacia abajo
1Condition.notifyAll();
acquire
Adquirir la propiedad de la cerradura
1Boolean Condition.acquire(Boolean blocking = true);
Parámetros de llamada:
- blocking : booleano, especifique si esperar, esperar cuando sea verdadero, el valor predeterminado es verdadero
Devolver resultado:
- Boolean , devuelve si el bloqueo se adquirió correctamente, verdadero significa adquisición satisfactoria
El método de adquisición se utiliza para adquirir la propiedad del bloqueo. Cuando el bloqueo está en un estado adquirible, este método devuelve verdadero de inmediato.
Cuando el bloqueo no está disponible y el bloqueo es verdadero, la fibra actual entra en suspensión. Cuando otras fibras liberan el bloqueo, este método vuelve verdadero.
Cuando el bloqueo no está disponible y el bloqueo es falso, el método devuelve falso.
release
Liberar la propiedad del bloqueo
1Condition.release();
Este método liberará la propiedad del bloqueo. Si la fibra actual no posee el bloqueo, este método arrojará un error.
count
Consultar el número actual de tareas en espera
1Integer Condition.count();
Devolver resultado:
- Integer , devuelve el número de tareas.
toString
Devuelve la representación en cadena del objeto, generalmente devuelve "[Native Object]", el objeto se puede volver a implementar de acuerdo con sus propias características
1String Condition.toString();
Devolver resultado:
- String , devuelve la representación de cadena del objeto.
toJSON
Devuelve la representación en formato JSON del objeto, generalmente devuelve una colección de atributos legibles definidos por el objeto
1Value Condition.toJSON(String key = "");
Parámetros de llamada:
- key : String, sin usar
Devolver resultado:
- Value , devuelve un valor que contiene JSON serializable