Corrutina del mòdul
Mòdul de control de concurrència
coroutineEl mòdul proporciona una fiberAPI per controlar l'ordre d'execució. Permet als desenvolupadors canviar manualment fiber, permetent la multitasca col·laborativa. coroutineUna funció important del mòdul és sleepla funció, que permet que el fibermòdul que s'executa actualment cedi la CPU i permeti que altres fibermòduls funcionin.
Aquí teniu un exemple de codi senzill que mostra com utilitzar coroutineel 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 fooi bardesprés fem servir coroutine.startla funció per iniciar totes dues fiber. En cada fiber, fem servir coroutine.sleepla funció per alliberar la CPU i deixar que altres fiberfuncionin.
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;
