Coroutine del modulo
Modulo di controllo della concorrenza
coroutineIl modulo fornisce un'API fiberper il controllo dell'ordine di esecuzione. Consente agli sviluppatori di passare manualmente fiber, consentendo il multitasking collaborativo. coroutineUna funzione importante del modulo è sleepla funzione che consente al fibermodulo attualmente in esecuzione di rinunciare alla CPU e lasciare fiberfunzionare altri moduli.
Ecco un semplice esempio di codice che dimostra come utilizzare coroutineil 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 fooe barquindi usiamo coroutine.startla funzione per avviarle entrambe fiber. In ciascuno di essi fiberutilizziamo coroutine.sleepla funzione per liberare la CPU e consentire fiberl'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;
