Obxecto obxecto incorporado

ObxectoEvento

O módulo Evento proporciona un obxecto de evento para operacións colaborativas de datos compartidos. Permite operacións sincronizadas entre varias fibras (corutinas) para lograr a multitarea cooperativa. O obxecto do evento ten tres métodos: esperar, pulso e borrar. O método de espera bloqueará a fibra actual ata que se active o evento, o método de pulso espertará todas as fibras que agardan polo evento e o método de borrado restablecerá a bandeira do evento a falso. mediante o usocoroutine.EventMódulo, os desenvolvedores poden controlar a secuencia de execución e o intercambio de datos entre fibras para implementar unha lóxica de negocio complexa.

Por exemplo, supoñamos que necesitamos compartir datos entre dúas fibras, pero a orde de execución das mesmas é incerta. Podes controlar a orde de execución das fibras a través dun obxecto de evento para garantir que unha fibra se activa antes de que se execute a outra. 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); } });

No exemplo anterior, creamos un obxecto de evento evt, usamos o método de espera na fibra 1 para esperar a que se activase o evento e usamos o método de pulso para activar o evento na fibra 2. Cando i é igual a 5, a fibra 2 activa o evento. , Fibre 1 esperta a través da escoita de eventos e continúa coa execución. Neste proceso, non se utilizan bloqueos nin outras ferramentas de sincronización entre as dúas fibras, pero garanten a sincronización de datos a nivel de fibra.

relación de herdanza

Construtor

Event

constructor de obxectos de eventos

1
new Event(Boolean value = false);

Parámetros de chamada:

  • value: Booleano, especifica se esperar, esperar cando é verdadeiro, o predeterminado é falso

función de membro

isSet

Determina se o obxecto do evento é verdadeiro

1
Boolean Event.isSet();

Resultados de devolución:

  • Boolean, se o evento é verdadeiro, devolve verdadeiro

set

Activa o evento (cambia o estado do evento a verdadeiro) e chama a pulse()

1
Event.set();

pulse

Activa todas as fibras á espera deste evento

1
Event.pulse();

clear

Restablecer evento (cambiar o estado do evento a falso)

1
Event.clear();

wait

esperar por un evento

1
Event.wait();

acquire

Obter a propiedade da pechadura

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

Parámetros de chamada:

  • blocking: Booleano, especifica se esperar, esperar cando é verdadeiro, o predeterminado é verdadeiro

Resultados de devolución:

  • Boolean, devolve se o bloqueo se adquiriu correctamente, verdadeiro indica que a adquisición foi exitosa.

O método de adquisición utilízase para obter a propiedade do bloqueo. Cando o bloqueo está no estado adquirible, este método devolve verdadeiro inmediatamente.

Cando o bloqueo non se pode adquirir e o bloqueo é verdadeiro, a fibra actual pasa a durmir. Cando outras fibras liberan o bloqueo, este método devolve verdadeiro.

Cando o bloqueo non se pode adquirir e o bloqueo é falso, o método devolve false.


release

Libera a propiedade do bloqueo

1
Event.release();

Este método liberará a propiedade do bloqueo ou producirá un erro se a fibra actual non posúe o bloqueo.


count

Consulta o número actual de tarefas en espera

1
Integer Event.count();

Resultados de devolución:

  • Integer, devolve o número de tarefas

toString

Devolve a representación en cadea do obxecto. Polo xeral, devólvese "[Obxecto nativo]". O obxecto pódese volver implementar segundo as súas propias características.

1
String Event.toString();

Resultados de devolución:

  • String, devolve a representación en cadea do obxecto

toJSON

Devolve unha representación en formato JSON do obxecto, devolvendo xeralmente unha colección de propiedades lexibles definidas polo obxecto.

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

Parámetros de chamada:

  • key: Cadena, non usada

Resultados de devolución:

  • Value, devolve un valor que contén JSON serializable