Corrutina del mòdul
Mòdul de control de concurrència
coroutine
El mòdul proporciona una fiber
API per controlar l'ordre d'execució. Permet als desenvolupadors canviar manualment fiber
, permetent la multitasca col·laborativa. coroutine
Una funció important del mòdul és sleep
la funció, que permet que el fiber
mòdul que s'executa actualment cedi la CPU i permeti que altres fiber
mòduls funcionin.
Aquí teniu un exemple de codi senzill que mostra com utilitzar coroutine
el mòdul:
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);
Al codi anterior, definim dues funcions foo
i bar
després fem servir coroutine.start
la funció per iniciar totes dues fiber
. En cada fiber
, fem servir coroutine.sleep
la funció per alliberar la CPU i deixar que altres fiber
funcionin.
objecte
Lock
bloquejar objecte, veureLock
1Lock coroutine.Lock;
Semaphore
objecte semàfor, vegeuSemaphore
1Semaphore coroutine.Semaphore;
Condition
objecte variable de condició, vegeuCondition
1Condition coroutine.Condition;
Event
objecte d'esdeveniment, vegeuEvent
1Event coroutine.Event;
Worker
Objecte de treball de fil independent, vegeuWorker
1Worker coroutine.Worker;
funció estàtica
start
Inicia una fibra i retorna l'objecte de fibra
1
2static Fiber coroutine.start(Function func,
...args);
Paràmetres de trucada:
- func: Funció, especifica la funció executada per la fibra
- args: ..., una seqüència variàdica d'arguments que es passaran a la funció dins de la fibra
Resultats de retorn:
- Fiber, retorna l'objecte de fibra
parallel
Executeu un conjunt de funcions en paral·lel i espereu el retorn
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
Paràmetres de trucada:
- funcs: Array, matriu de funcions executades en paral·lel
- fibers: Enter, limita el nombre de fibres concurrents, el valor predeterminat és -1, habilita el mateix nombre de fibres que les funcions
Resultats de retorn:
- Array, retorna una matriu de resultats d'execució de funcions
Executeu una funció en paral·lel per processar un conjunt de dades i espereu el retorn
1
2
3static Array coroutine.parallel(Array datas,
Function func,
Integer fibers = -1);
Paràmetres de trucada:
- datas: Array, matriu de dades per a l'execució paral·lela
- func: Funció, funció executada en paral·lel
- fibers: Enter, limita el nombre de fibres concurrents, el valor predeterminat és -1, habilita el mateix nombre de fibres que les dades
Resultats de retorn:
- Array, retorna una matriu de resultats d'execució de funcions
Executeu una funció diverses vegades en paral·lel i espereu el retorn
1
2
3static Array coroutine.parallel(Function func,
Integer num,
Integer fibers = -1);
Paràmetres de trucada:
- func: Funció, el nombre de funcions executades en paral·lel
- num: Nombre sencer, nombre de tasques repetides
- fibers: Enter, limita el nombre de fibres concurrents, el valor predeterminat és -1, habilita el mateix nombre de fibres que les funcions
Resultats de retorn:
- Array, retorna una matriu de resultats d'execució de funcions
Executeu un conjunt de funcions en paral·lel i espereu el retorn
1static Array coroutine.parallel(...funcs);
Paràmetres de trucada:
- funcs: ..., un conjunt de funcions executades en paral·lel
Resultats de retorn:
- Array, retorna una matriu de resultats d'execució de funcions
current
Retorna la fibra actual
1static Fiber coroutine.current();
Resultats de retorn:
- Fiber, l'objecte de fibra actual
sleep
Posa en pausa la fibra actual durant el temps especificat
1static coroutine.sleep(Integer ms = 0) async;
Paràmetres de trucada:
- ms: Sencer, especifica el temps de pausa, en mil·lisegons, el valor per defecte és 0, és a dir, l'operació es reprendrà immediatament quan hi hagi temps.
propietats estàtiques
fibers
Array, retorna totes les matrius de fibra en funcionament
1static readonly Array coroutine.fibers;
spareFibers
Enter, consulteu i configureu-lo com a inactiuFiberQuantitat, quan la fluctuació del servidor és gran, l'inactivitat es pot augmentar adequadamentFiberquantitat. El valor per defecte és 256
1static Integer coroutine.spareFibers;
vmid
Enter, consulta l'actualvmnúmero de sèrie
1static readonly Integer coroutine.vmid;
loglevel
Enter, modificar i consultar-hovmEl nivell de sortida s'utilitza per filtrar la informació de sortida. El valor predeterminat ésconsole.NOTSET, sortiu tot
1static Integer coroutine.loglevel;