Corrutina do módulo
Módulo de control de concorrencia
coroutine
O módulo proporciona unha fiber
API para controlar a orde de execución. Permite aos desenvolvedores cambiar manualmente fiber
, permitindo a multitarefa colaborativa. coroutine
Unha función importante do módulo é sleep
a función, que permite que o fiber
módulo en execución actualmente abandone a CPU e deixe fiber
funcionar outros módulos.
Aquí tes un exemplo de código sinxelo que mostra como usar coroutine
o módulo:
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);
No código anterior, definimos dúas funcións foo
e bar
despois usamos coroutine.start
a función para iniciar ambas fiber
. En cada fiber
, usamos coroutine.sleep
a función para liberar a CPU e deixar que outros fiber
funcionen.
obxecto
Lock
bloquear obxecto, verLock
1Lock coroutine.Lock;
Semaphore
obxecto semáforo, véxSemaphore
1Semaphore coroutine.Semaphore;
Condition
obxecto variable de condición, véxCondition
1Condition coroutine.Condition;
Event
obxecto do evento, véxEvent
1Event coroutine.Event;
Worker
Obxecto de traballo de fío independente, véxaseWorker
1Worker coroutine.Worker;
función estática
start
Inicia unha fibra e devolve o obxecto de fibra
1
2static Fiber coroutine.start(Function func,
...args);
Parámetros de chamada:
- func: Función, especifique a función executada pola fibra
- args: ..., unha secuencia variádica de argumentos que se pasarán á función dentro da fibra
Resultados de devolución:
- Fiber, devolve o obxecto de fibra
parallel
Executar un conxunto de funcións en paralelo e esperar o retorno
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
Parámetros de chamada:
- funcs: Array, matriz de funcións executadas en paralelo
- fibers: Enteiro, limita o número de fibras concorrentes, o valor predeterminado é -1, activa o mesmo número de fibras que as funcións
Resultados de devolución:
- Array, devolve unha matriz de resultados de execución de funcións
Executar unha función en paralelo para procesar un conxunto de datos e esperar a devolución
1
2
3static Array coroutine.parallel(Array datas,
Function func,
Integer fibers = -1);
Parámetros de chamada:
- datas: Array, matriz de datos para execución paralela
- func: Función, función executada en paralelo
- fibers: Número enteiro, limita o número de fibras concorrentes, o valor predeterminado é -1, activa o mesmo número de fibras que os datos
Resultados de devolución:
- Array, devolve unha matriz de resultados de execución de funcións
Executar unha función varias veces en paralelo e agardar o retorno
1
2
3static Array coroutine.parallel(Function func,
Integer num,
Integer fibers = -1);
Parámetros de chamada:
- func: Función, o número de funcións executadas en paralelo
- num: Número enteiro, número de tarefas repetidas
- fibers: Enteiro, limita o número de fibras concorrentes, o valor predeterminado é -1, activa o mesmo número de fibras que as funcións
Resultados de devolución:
- Array, devolve unha matriz de resultados de execución de funcións
Executar un conxunto de funcións en paralelo e esperar o retorno
1static Array coroutine.parallel(...funcs);
Parámetros de chamada:
- funcs: ..., un conxunto de funcións executadas en paralelo
Resultados de devolución:
- Array, devolve unha matriz de resultados de execución de funcións
current
Devolve a fibra actual
1static Fiber coroutine.current();
Resultados de devolución:
- Fiber, o obxecto de fibra actual
sleep
Pausa a fibra actual durante o tempo especificado
1static coroutine.sleep(Integer ms = 0) async;
Parámetros de chamada:
- ms: Enteiro, especifica o tempo de pausa, en milisegundos, o valor predeterminado é 0, é dicir, a operación retomarase inmediatamente cando haxa tempo.
propiedades estáticas
fibers
Matriz, devolve todas as matrices de fibra en execución
1static readonly Array coroutine.fibers;
spareFibers
Enteiro, consulta e establece o estado inactivoFiberCantidade, cando o jitter do servidor é grande, o inactivo pódese aumentar adecuadamenteFibercantidade. O valor predeterminado é 256
1static Integer coroutine.spareFibers;
vmid
Enteiro, consulta o actualvmnúmero de serie
1static readonly Integer coroutine.vmid;
loglevel
Enteiro, modifica e consulta istovmO nivel de saída úsase para filtrar a información de saída. O predeterminado éconsole.NOTSET, saíndo todo
1static Integer coroutine.loglevel;