Objeto incorporado

ObjetoEvento

El módulo Event proporciona un objeto de evento para operaciones colaborativas de datos compartidos. Permite operaciones sincronizadas entre múltiples fibras (corrutinas) para lograr una multitarea cooperativa. El objeto de evento tiene tres métodos: esperar, pulsar y borrar. El método de espera bloqueará la fibra actual hasta que se active el evento, el método de pulso despertará todas las fibras que esperan el evento y el método de borrado restablecerá el indicador del evento a FALSO. mediante el usocoroutine.EventMódulo, los desarrolladores pueden controlar la secuencia de ejecución y el intercambio de datos entre fibras para implementar una lógica empresarial compleja.

Por ejemplo, supongamos que necesitamos compartir datos entre dos fibras, pero el orden de ejecución es incierto. Puede controlar el orden de ejecución de las fibras a través de un objeto de evento para garantizar que una fibra se active antes de que se ejecute la otra. Eventos de fibra.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
const coroutine = require('coroutine'); var evt = new coroutine.Event(); coroutine.start(function() { console.log('[1] wait for event'); evt.wait(); console.log('[1] receive event'); }); coroutine.start(function() { loop: for (var i = 0; i < 10; i++) { console.log('[2] do some work'); if (i === 5) { evt.pulse(); } coroutine.sleep(1000); } });

En el ejemplo anterior, creamos un objeto de evento evt, usamos el método de espera en la fibra 1 para esperar a que se active el evento y usamos el método de pulso para activar el evento en la fibra 2. Cuando i es igual a 5, la fibra 2 activa el event. , la Fibra 1 se activa mediante la escucha de eventos y continúa la ejecución. En este proceso no se utilizan bloqueos ni otras herramientas de sincronización entre las dos fibras, pero aseguran la sincronización de datos a nivel de fibra.

relación de herencia

Constructor

Event

constructor de objetos de evento

1
new Event(Boolean value = false);

Parámetros de llamada:

  • value: Booleano, especifica si se debe esperar, esperar cuando sea verdadero, el valor predeterminado es falso

función miembro

isSet

Determinar si el objeto del evento es verdadero.

1
Boolean Event.isSet();

Resultados de devolución:

  • Boolean, si el evento es verdadero, devuelve verdadero

set

Active el evento (cambie el estado del evento a verdadero) y llame a pulse()

1
Event.set();

pulse

Activa todas las fibras esperando este evento.

1
Event.pulse();

clear

Restablecer evento (cambiar el estado del evento a falso)

1
Event.clear();

wait

espera un evento

1
Event.wait();

acquire

Obtener la propiedad de la cerradura

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

Parámetros de llamada:

  • blocking: Booleano, especifica si se debe esperar, esperar cuando sea verdadero, el valor predeterminado es verdadero

Resultados de devolución:

  • Boolean, devuelve si el bloqueo se adquirió correctamente; verdadero indica que la adquisición se realizó correctamente.

El método de adquisición se utiliza para obtener la propiedad del candado. Cuando el candado está en estado adquirible, este método devuelve verdadero inmediatamente.

Cuando no se puede adquirir el bloqueo y el bloqueo es verdadero, la fibra actual entra en modo de suspensión. Cuando otras fibras liberan el bloqueo, este método devuelve verdadero.

Cuando no se puede adquirir el bloqueo y el bloqueo es falso, el método devuelve falso.


release

Liberar la propiedad de la cerradura

1
Event.release();

Este método liberará la propiedad del candado o generará un error si la fibra actual no es propietaria del candado.


count

Consultar el número actual de tareas en espera.

1
Integer Event.count();

Resultados de devolución:

  • Integer, devuelve el número de tareas

toString

Devuelve la representación de cadena del objeto. Generalmente, se devuelve "[Objeto nativo]". El objeto se puede volver a implementar de acuerdo con sus propias características.

1
String Event.toString();

Resultados de devolución:

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

toJSON

Devuelve una representación en formato JSON del objeto, que generalmente devuelve una colección de propiedades legibles definidas por el objeto.

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

Parámetros de llamada:

  • key: Cadena, no utilizada

Resultados de devolución:

  • Value, devuelve un valor que contiene JSON serializable