Objeto objeto incorporado

Condición del objeto

Objeto variable de condición

Las variables de condición son un mecanismo que utiliza variables globales compartidas entre fibras para sincronizar, que incluyen principalmente dos acciones: 1) un subproceso espera a que se satisfaga una condición y se suspende; 2) otro subproceso hace que la condición sea verdadera, Y notifique a la fibra en espera que se ejecute hacia abajo.

Para evitar la competencia, cada variable de condición necesita la cooperación de un Lock (el Lock se puede crear explícitamente y pasar 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 un lote de interruptores de fibra;

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 (los bloqueos requeridos por las variables de condición son construidos internamente por fibjs)

1
new Condition();

Constructor variable de condición

1
new Condition(Lock lock);

Parámetros de llamada:

  • lock : Lock , use un bloqueo autoconstruido

Función miembro

wait

Ponga la fibra en un estado bloqueado

1
Condition.wait();

notify

Notificar una fibra bloqueada (que se unió por última vez al grupo de fibras) para continuar la ejecución

1
Condition.notify();

notifyAll

Notificar a todas las fibras bloqueadas para continuar hacia abajo

1
Condition.notifyAll();

acquire

Obtención de propiedad de bloqueo

1
Boolean Condition.acquire(Boolean blocking = true);

Parámetros de llamada:

  • blocking : booleano, especifique si esperar, esperar si es verdadero, el valor predeterminado es verdadero

Devuelve el resultado:

  • Boolean , devuelve si el bloqueo se adquirió con éxito, verdadero indica adquisición exitosa

El método de adquisición se utiliza para adquirir la propiedad del bloqueo. Este método devuelve verdadero inmediatamente cuando el bloqueo está en un estado adquirible.

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 devuelve verdadero.

Cuando el bloqueo no está disponible y el bloqueo es falso, el método devuelve falso.


release

Liberar la propiedad de la cerradura

1
Condition.release();

Este método liberará la propiedad del bloqueo, y si la fibra actual no posee el bloqueo, arrojará un error.


count

Consulta el número de tareas actualmente en espera

1
Integer Condition.count();

Devuelve el resultado:

  • Integer , devuelve el número de tareas

toString

Devuelve una representación de cadena del objeto, generalmente "[Objeto nativo]". Los objetos se pueden volver a implementar de acuerdo con sus propias características

1
String Condition.toString();

Devuelve el resultado:

  • String , devuelve una representación de cadena del objeto

toJSON

Devuelve una representación JSON del objeto, normalmente devuelve una colección de propiedades legibles definidas por el objeto

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

Parámetros de llamada:

  • key : cadena, sin usar

Devuelve el resultado:

  • Value , devuelve un valor que contiene un JSON serializable