Objecte objecte incorporat

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 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); } });

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

1
new 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

1
Boolean 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()

1
Event.set();

pulse

Activa totes les fibres a l'espera d'aquest esdeveniment

1
Event.pulse();

clear

Restableix l'esdeveniment (canvia l'estat de l'esdeveniment a fals)

1
Event.clear();

wait

esperar un esdeveniment

1
Event.wait();

acquire

Obteniu la propietat del pany

1
Boolean 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

1
Event.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

1
Integer 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.

1
String 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.

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

Paràmetres de trucada:

  • key: Corda, no utilitzada

Resultats de retorn:

  • Value, retorna un valor que conté JSON serializable