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 baje.

Con el fin de evitar la competencia, cada variable condición requiere un Lock apropiado ( Lock auto creado de forma explícita y aprobada en, también conocido fibjs creados por ti)

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

Notifique a una fibra bloqueada (la última agregada al grupo de fibras) para continuar bajando

1
Condition.notify();

notifyAll

Notifique a todas las fibras bloqueadas que continúen 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. Si la fibra actual no posee el bloqueo, este método 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