corrutinas do módulo
Módulo de control de concorrencia
coroutine
Os módulos proporcionan unha API para controlar a orde de fiber
execución . Permite aos desenvolvedores cambiar manualmente fiber
, permitindo a multitarefa cooperativa. coroutine
Unha función importante do módulo é sleep
a función , que permite que o que se está executando fiber
ceda a CPU para que outros fiber
poidan executarse .
Aquí tes un código de mostra sinxelo que demostra 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
, e despois usamos coroutine.start
a función para iniciar ambas fiber
. fiber
En cada un , usamos coroutine.sleep
a función para abandonar a CPU para que outros fiber
se executen .
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éxaseEvent
1Event coroutine.Event;
Worker
Obxecto traballador de fíos separado, consulteWorker
1Worker coroutine.Worker;
función estática
start
Iniciar unha fibra e devolver o obxecto de fibra
1
2static Fiber coroutine.start(Function func,
...args);
Parámetros de chamada:
- func: Función, especifique a función para a execución da fibra
- args: ..., secuencia de argumentos variádicos que se pasarán á función dentro da fibra
devolver resultado:
- Fiber, devolve o obxecto de fibra
parallel
Executa un conxunto de funcións en paralelo e espera un retorno
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
Parámetros de chamada:
- funcs: Array, unha matriz de funcións para executar 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 as funcións
devolver resultado:
- 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 que volva
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, unha función que se executará 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
devolver resultado:
- Array, devolve unha matriz de resultados de execución de funcións
Executar unha función varias veces en paralelo e esperar a que volva
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 a executar en paralelo
- num: Número enteiro, o número de tarefas repetidas
- fibers: Número enteiro, limita o número de fibras concorrentes, o valor predeterminado é -1, activa o mesmo número de fibras que as funcións
devolver resultado:
- Array, devolve unha matriz de resultados de execución de funcións
Executa un conxunto de funcións en paralelo e espera un retorno
1static Array coroutine.parallel(...funcs);
Parámetros de chamada:
- funcs: ..., un conxunto de funcións que se executarán en paralelo
devolver resultado:
- Array, devolve unha matriz de resultados de execución de funcións
current
devolver a fibra actual
1static Fiber coroutine.current();
devolver resultado:
- Fiber, o obxecto de fibra actual
sleep
Suspende 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, retomase inmediatamente cando hai tempo de inactividade
propiedade estática
fibers
Array, devolve todas as matrices de fibra en execución
1static readonly Array coroutine.fibers;
spareFibers
Enteiro, consulta e liberaFiberCantidade, cando o jitter do servidor é grande, o tempo de inactividade pódese aumentar moderadamenteFibercantidade. O valor predeterminado é 256
1static Integer coroutine.spareFibers;
vmid
Enteiro, consulta actualvmnúmero de serie
1static readonly Integer coroutine.vmid;
loglevel
Enteiro, modifica e consulta istovmO nivel de saída, usado para filtrar a información de saída, é o predeterminadoconsole.NOTSET, toda a saída
1static Integer coroutine.loglevel;