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
19const 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
1new 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
1Boolean 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()
1Event.set();
pulse
Activa todas as fibras á espera deste evento
1Event.pulse();
clear
Restablecer evento (cambiar o estado do evento a falso)
1Event.clear();
wait
esperar por un evento
1Event.wait();
acquire
Obter a propiedade da pechadura
1Boolean 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
1Event.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
1Integer 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.
1String 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.
1Value 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