Oggetto oggetto incorporato

OggettoEvento

Il modulo Evento fornisce un oggetto evento per operazioni collaborative sui dati condivisi. Consente operazioni sincronizzate tra più fibre (coroutine) per ottenere un multitasking cooperativo. L'oggetto evento ha tre metodi: attesa, impulso e cancellazione. Il metodo attesa bloccherà la fibra corrente fino all'attivazione dell'evento, il metodo impulso risveglierà tutte le fibre in attesa dell'evento e il metodo cancellazione ripristinerà il flag evento su falso. usandocoroutine.EventNel modulo gli sviluppatori possono controllare la sequenza di esecuzione e la condivisione dei dati tra le fibre per implementare una logica aziendale complessa.

Ad esempio, supponiamo di dover condividere dati tra due fibre, ma l'ordine della loro esecuzione è incerto. È possibile controllare l'ordine di esecuzione delle fibre tramite un oggetto evento per garantire che una fibra venga attivata prima dell'esecuzione dell'altra. Eventi 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); } });

Nell'esempio precedente, abbiamo creato un oggetto evento evt, utilizzato il metodo wait nella fibra 1 per attendere l'attivazione dell'evento e utilizzato il metodo impulsi per attivare l'evento nella fibra 2. Quando i è uguale a 5, la fibra 2 attiva l'evento evento., la Fibra 1 viene risvegliata attraverso l'ascolto dell'evento e continua l'esecuzione. In questo processo non vengono utilizzati blocchi o altri strumenti di sincronizzazione tra le due fibre, ma garantiscono la sincronizzazione dei dati a livello di fibra.

rapporto ereditario

Costruttore

Event

costruttore dell'oggetto evento

1
new Event(Boolean value = false);

Parametri di chiamata:

  • value: Booleano, specifica se attendere, attendere quando vero, il valore predefinito è falso

funzione membro

isSet

Determina se l'oggetto evento è vero

1
Boolean Event.isSet();

Risultati restituiti:

  • Boolean, se l'evento è vero, restituisce vero

set

Attiva l'evento (cambia lo stato dell'evento in true) e chiama pulsare()

1
Event.set();

pulse

Attiva tutte le fibre in attesa di questo evento

1
Event.pulse();

clear

Reimposta evento (modifica lo stato dell'evento su falso)

1
Event.clear();

wait

attendere un evento

1
Event.wait();

acquire

Ottieni la proprietà della serratura

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

Parametri di chiamata:

  • blocking: Booleano, specifica se attendere, attendere quando vero, il valore predefinito è vero

Risultati restituiti:

  • Boolean, restituisce se il blocco è stato acquisito con successo, true indica l'acquisizione riuscita.

Il metodo acquire viene utilizzato per ottenere la proprietà del blocco. Quando il blocco è nello stato acquisibile, questo metodo restituisce immediatamente true.

Quando il blocco non può essere acquisito e il blocco è vero, la fibra corrente va in modalità sospensione. Quando altre fibre rilasciano il blocco, questo metodo restituisce vero.

Quando il blocco non può essere acquisito e il blocco è false, il metodo restituisce false.


release

Rilascia la proprietà della serratura

1
Event.release();

Questo metodo rilascerà la proprietà del blocco o genererà un errore se la fibra corrente non possiede il blocco.


count

Interroga il numero corrente di attività in attesa

1
Integer Event.count();

Risultati restituiti:

  • Integer, restituisce il numero di attività

toString

Restituisce la rappresentazione in formato stringa dell'oggetto. Generalmente viene restituito "[Oggetto nativo]". L'oggetto può essere reimplementato in base alle proprie caratteristiche.

1
String Event.toString();

Risultati restituiti:

  • String, restituisce la rappresentazione di stringa dell'oggetto

toJSON

Restituisce una rappresentazione in formato JSON dell'oggetto, generalmente restituendo una raccolta di proprietà leggibili definite dall'oggetto.

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

Parametri di chiamata:

  • key: Stringa, non utilizzata

Risultati restituiti:

  • Value, restituisce un valore contenente JSON serializzabile