Coroutine del modulo
Modulo di controllo della concorrenza
coroutine
Il modulo fornisce un'API fiber
per il controllo dell'ordine di esecuzione. Consente agli sviluppatori di passare manualmente fiber
, consentendo il multitasking collaborativo. coroutine
Una funzione importante del modulo è sleep
la funzione che consente al fiber
modulo attualmente in esecuzione di rinunciare alla CPU e lasciare fiber
funzionare altri moduli.
Ecco un semplice esempio di codice che dimostra come utilizzare coroutine
il modulo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16const coroutine = require('coroutine');
function foo() {
console.log('start foo');
coroutine.sleep(1000); // enter sleep mode
console.log('end foo');
}
function bar() {
console.log('start bar');
coroutine.sleep(2000);
console.log('end bar');
}
coroutine.start(foo);
coroutine.start(bar);
Nel codice sopra, definiamo due funzioni foo
e bar
quindi usiamo coroutine.start
la funzione per avviarle entrambe fiber
. In ciascuno di essi fiber
utilizziamo coroutine.sleep
la funzione per liberare la CPU e consentire fiber
l'esecuzione degli altri.
oggetto
Lock
bloccare l'oggetto, vedereLock
1Lock coroutine.Lock;
Semaphore
oggetto semaforo, vediSemaphore
1Semaphore coroutine.Semaphore;
Condition
oggetto variabile di condizione, vedereCondition
1Condition coroutine.Condition;
Event
oggetto evento, vedereEvent
1Event coroutine.Event;
Worker
Oggetto di lavoro thread indipendente, vedereWorker
1Worker coroutine.Worker;
funzione statica
start
Avvia una fibra e restituisce l'oggetto fibra
1
2static Fiber coroutine.start(Function func,
...args);
Parametri di chiamata:
- func: Funzione, specifica la funzione eseguita dalla fibra
- args: ..., una sequenza variadica di argomenti che verrà passata alla funzione all'interno della fibra
Risultati restituiti:
- Fiber, restituisce l'oggetto fibra
parallel
Esegui una serie di funzioni in parallelo e attendi il ritorno
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
Parametri di chiamata:
- funcs: Array, array di funzioni eseguite in parallelo
- fibers: Intero, limita il numero di fibre simultanee, il valore predefinito è -1, abilita lo stesso numero di fibre delle funzioni
Risultati restituiti:
- Array, restituisce una matrice di risultati di esecuzione della funzione
Esegui una funzione in parallelo per elaborare un insieme di dati e attendi il ritorno
1
2
3static Array coroutine.parallel(Array datas,
Function func,
Integer fibers = -1);
Parametri di chiamata:
- datas: Array, array di dati per l'esecuzione parallela
- func: Funzione, funzione eseguita in parallelo
- fibers: Numero intero, limita il numero di fibre simultanee, il valore predefinito è -1, abilita lo stesso numero di fibre dei dati
Risultati restituiti:
- Array, restituisce una matrice di risultati di esecuzione della funzione
Esegui una funzione più volte in parallelo e attendi il ritorno
1
2
3static Array coroutine.parallel(Function func,
Integer num,
Integer fibers = -1);
Parametri di chiamata:
- func: Funzione, il numero di funzioni eseguite in parallelo
- num: numero intero, numero di attività ripetute
- fibers: Intero, limita il numero di fibre simultanee, il valore predefinito è -1, abilita lo stesso numero di fibre delle funzioni
Risultati restituiti:
- Array, restituisce una matrice di risultati di esecuzione della funzione
Esegui una serie di funzioni in parallelo e attendi il ritorno
1static Array coroutine.parallel(...funcs);
Parametri di chiamata:
- funcs: ..., un insieme di funzioni eseguite in parallelo
Risultati restituiti:
- Array, restituisce una matrice di risultati di esecuzione della funzione
current
Restituisce la fibra corrente
1static Fiber coroutine.current();
Risultati restituiti:
- Fiber, l'oggetto fibra corrente
sleep
Mettere in pausa la fibra corrente per il tempo specificato
1static coroutine.sleep(Integer ms = 0) async;
Parametri di chiamata:
- ms: Numero intero, specifica il tempo di pausa, in millisecondi, il valore predefinito è 0, ovvero l'operazione verrà ripresa immediatamente quando c'è tempo.
proprietà statiche
fibers
Array, restituisce tutti gli array di fibre attualmente in esecuzione
1static readonly Array coroutine.fibers;
spareFibers
Intero, interroga e imposta inattivoFiberQuantità: quando il jitter del server è elevato, l'inattività può essere aumentata in modo appropriatoFiberquantità. L'impostazione predefinita è 256
1static Integer coroutine.spareFibers;
vmid
Intero, interroga la correntevmnumero di serie
1static readonly Integer coroutine.vmid;
loglevel
Intero, modificalo e interrogalovmIl livello di output viene utilizzato per filtrare le informazioni di output. L'impostazione predefinita èconsole.NOTSET, emetti tutto
1static Integer coroutine.loglevel;