Objeto objeto incorporado

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 hacia abajo.

Para evitar la competencia, cada variable de condición necesita 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 21
var 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 2
ready go

Herencia

Constructor

Condition

Constructor de variables de condición (el bloqueo requerido por la variable de condición es construido internamente por fibjs)

1
new Condition();

Constructor de variables de condición

1
new Condition(Lock lock);

Parámetros de llamada:

  • lock : Lock , utilice un bloqueo de construcción propia

Función miembro

wait

Ponga la fibra en estado de bloqueo

1
Condition.wait();

notify

Notificar una fibra bloqueada (la que se unió al grupo de fibras en último lugar) para continuar la ejecución hacia abajo

1
Condition.notify();

notifyAll

Notifique a todas las fibras bloqueadas para continuar la ejecución hacia abajo

1
Condition.notifyAll();

acquire

Adquirir la propiedad de la cerradura

1
Boolean 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ó con éxito, verdadero significa que la adquisición se realizó correctamente

El método de adquisición se utiliza para adquirir la propiedad de la cerradura. Cuando la cerradura está en un estado adquirible, este método devuelve verdadero inmediatamente.

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

1
Condition.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

1
Integer 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

1
String 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

1
Value Condition.toJSON(String key = "");

Parámetros de llamada:

  • key : String, sin usar

Devolver resultado:

  • Value , devuelve un valor que contiene JSON serializable