Corrutina del módulo
Módulo de control de concurrencia
coroutine
El módulo proporciona una fiber
API para controlar el orden de ejecución. Permite a los desarrolladores cambiar manualmente fiber
, lo que permite la multitarea colaborativa. coroutine
Una función importante del módulo es sleep
la función que permite que el fiber
módulo que se está ejecutando actualmente abandone la CPU y permita que otros fiber
módulos se ejecuten.
Aquí hay un código de ejemplo simple que demuestra cómo usar coroutine
el 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);
En el código anterior, definimos dos funciones foo
y bar
luego usamos coroutine.start
la función para iniciar ambas fiber
. En cada uno fiber
, usamos coroutine.sleep
la función para liberar la CPU y dejar que otros fiber
se ejecuten.
objeto
Lock
bloquear objeto, verLock
1Lock coroutine.Lock;
Semaphore
objeto semáforo, verSemaphore
1Semaphore coroutine.Semaphore;
Condition
objeto variable de condición, verCondition
1Condition coroutine.Condition;
Event
objeto de evento, verEvent
1Event coroutine.Event;
Worker
Objeto de trabajo de hilo independiente, verWorker
1Worker coroutine.Worker;
función estática
start
Inicia una fibra y devuelve el objeto de fibra.
1
2static Fiber coroutine.start(Function func,
...args);
Parámetros de llamada:
- func: Función, especifica la función ejecutada por la fibra.
- args: ..., una secuencia variada de argumentos que se pasarán a la función dentro de la fibra
Resultados de devolución:
- Fiber, devuelve el objeto de fibra
parallel
Ejecutar un conjunto de funciones en paralelo y esperar el regreso.
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
Parámetros de llamada:
- funcs: Matriz, matriz de funciones ejecutadas en paralelo
- fibers: Entero, limita el número de fibras simultáneas, el valor predeterminado es -1, habilita el mismo número de fibras que funciones
Resultados de devolución:
- Array, devuelve una matriz de resultados de ejecución de funciones
Ejecutar una función en paralelo para procesar un conjunto de datos y esperar el retorno
1
2
3static Array coroutine.parallel(Array datas,
Function func,
Integer fibers = -1);
Parámetros de llamada:
- datas: Matriz, matriz de datos para ejecución paralela
- func: Función, función ejecutada en paralelo
- fibers: Entero, limita la cantidad de fibras simultáneas, el valor predeterminado es -1, habilita la misma cantidad de fibras que datos
Resultados de devolución:
- Array, devuelve una matriz de resultados de ejecución de funciones
Ejecutar una función varias veces en paralelo y esperar el retorno
1
2
3static Array coroutine.parallel(Function func,
Integer num,
Integer fibers = -1);
Parámetros de llamada:
- func: Función, el número de funciones ejecutadas en paralelo
- num: Entero, número de tareas repetidas
- fibers: Entero, limita el número de fibras simultáneas, el valor predeterminado es -1, habilita el mismo número de fibras que funciones
Resultados de devolución:
- Array, devuelve una matriz de resultados de ejecución de funciones
Ejecutar un conjunto de funciones en paralelo y esperar el regreso.
1static Array coroutine.parallel(...funcs);
Parámetros de llamada:
- funcs: ..., un conjunto de funciones ejecutadas en paralelo
Resultados de devolución:
- Array, devuelve una matriz de resultados de ejecución de funciones
current
Devuelve la fibra actual
1static Fiber coroutine.current();
Resultados de devolución:
- Fiber, el objeto de fibra actual
sleep
Pausar la fibra actual durante el tiempo especificado
1static coroutine.sleep(Integer ms = 0) async;
Parámetros de llamada:
- ms: Entero, especifica el tiempo de pausa, en milisegundos, el valor predeterminado es 0, es decir, la operación se reanudará inmediatamente cuando haya tiempo.
propiedades estáticas
fibers
Matriz, devuelve todas las matrices de fibra actualmente en ejecución
1static readonly Array coroutine.fibers;
spareFibers
Entero, consulta y puesta inactivaFiberCantidad: cuando la fluctuación del servidor es grande, el estado inactivo se puede aumentar adecuadamenteFibercantidad. El valor predeterminado es 256
1static Integer coroutine.spareFibers;
vmid
Entero, consulta el actualvmnúmero de serie
1static readonly Integer coroutine.vmid;
loglevel
Entero, modificar y consultar estovmEl nivel de salida se utiliza para filtrar la información de salida. El valor predeterminado esconsole.NOTSET, generar todo
1static Integer coroutine.loglevel;