ObjectEvent
El mòdul Esdeveniment proporciona un objecte d'esdeveniment per a operacions de dades compartides col·laboratives. Permet operacions sincronitzades entre múltiples fibres (coroutines) per aconseguir una multitasca cooperativa. L'objecte d'esdeveniment té tres mètodes: espera, pols i esborra. El mètode d'espera bloquejarà la fibra actual fins que s'activa l'esdeveniment, el mètode de pols despertarà totes les fibres que esperen l'esdeveniment i el mètode clear restablirà el senyal d'esdeveniment a fals. mitjançant l'ús decoroutine.EventMòdul, els desenvolupadors poden controlar la seqüència d'execució i l'intercanvi de dades entre fibres per implementar una lògica de negoci complexa.
Per exemple, suposem que necessitem compartir dades entre dues fibres, però l'ordre d'execució és incert. Podeu controlar l'ordre d'execució de les fibres mitjançant un objecte d'esdeveniment per assegurar-vos que una fibra s'activa abans que s'executi l'altra. Esdeveniments 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);
}
});
A l'exemple anterior, hem creat un objecte d'esdeveniment evt, hem utilitzat el mètode d'espera a la fibra 1 per esperar que l'esdeveniment s'activés i hem utilitzat el mètode de pols per activar l'esdeveniment a la fibra 2. Quan i és igual a 5, la fibra 2 activa el esdeveniment. , Fiber 1 es desperta mitjançant l'escolta d'esdeveniments i continua amb l'execució. En aquest procés, no s'utilitzen bloquejos ni altres eines de sincronització entre les dues fibres, però garanteixen la sincronització de dades a nivell de fibra.
relació hereditària
Constructor
Event
constructor d'objectes d'esdeveniment
1new Event(Boolean value = false);
Paràmetres de trucada:
- value: Booleà, especifica si s'ha d'esperar, esperar quan és cert, per defecte és fals
funció de membre
isSet
Determineu si l'objecte d'esdeveniment és cert
1Boolean Event.isSet();
Resultats de retorn:
- Boolean, si l'esdeveniment és cert, retorna true
set
Activa l'esdeveniment (canvia l'estat de l'esdeveniment a true) i truca a pulse()
1Event.set();
pulse
Activa totes les fibres a l'espera d'aquest esdeveniment
1Event.pulse();
clear
Restableix l'esdeveniment (canvia l'estat de l'esdeveniment a fals)
1Event.clear();
wait
esperar un esdeveniment
1Event.wait();
acquire
Obteniu la propietat del pany
1Boolean Event.acquire(Boolean blocking = true);
Paràmetres de trucada:
- blocking: Booleà, especifica si s'ha d'esperar, esperar quan és cert, per defecte és cert
Resultats de retorn:
- Boolean, retorna si el bloqueig s'ha adquirit correctament, true indica l'adquisició correcta.
El mètode d'adquisició s'utilitza per obtenir la propietat del bloqueig. Quan el bloqueig està en l'estat d'adquirir, aquest mètode retorna veritable immediatament.
Quan el bloqueig no es pot adquirir i el bloqueig és cert, la fibra actual s'entén. Quan altres fibres alliberen el bloqueig, aquest mètode torna cert.
Quan el bloqueig no es pot adquirir i el bloqueig és fals, el mètode retorna fals.
release
Allibera la propietat del pany
1Event.release();
Aquest mètode alliberarà la propietat del bloqueig o generarà un error si la fibra actual no és la propietària del bloqueig.
count
Consulta el nombre actual de tasques en espera
1Integer Event.count();
Resultats de retorn:
- Integer, retorna el nombre de tasques
toString
Retorna la representació de cadena de l'objecte. En general, es retorna "[Objecte natiu]". L'objecte es pot tornar a implementar segons les seves pròpies característiques.
1String Event.toString();
Resultats de retorn:
- String, retorna la representació de cadena de l'objecte
toJSON
Retorna una representació en format JSON de l'objecte, generalment retornant una col·lecció de propietats llegibles definides per l'objecte.
1Value Event.toJSON(String key = "");
Paràmetres de trucada:
- key: Corda, no utilitzada
Resultats de retorn:
- Value, retorna un valor que conté JSON serializable