Módulo módulo básico

Corrutina del módulo

Módulo de control de concurrencia

coroutineEl módulo proporciona una fiberAPI para controlar el orden de ejecución. Permite a los desarrolladores cambiar manualmente fiber, lo que permite la multitarea colaborativa. coroutineUna función importante del módulo es sleepla función que permite que el fibermódulo que se está ejecutando actualmente abandone la CPU y permita que otros fibermódulos se ejecuten.

Aquí hay un código de ejemplo simple que demuestra cómo usar coroutineel módulo:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
const 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 fooy barluego usamos coroutine.startla función para iniciar ambas fiber. En cada uno fiber, usamos coroutine.sleepla función para liberar la CPU y dejar que otros fiberse ejecuten.

objeto

Lock

bloquear objeto, verLock

1
Lock coroutine.Lock;

Semaphore

objeto semáforo, verSemaphore

1
Semaphore coroutine.Semaphore;

Condition

objeto variable de condición, verCondition

1
Condition coroutine.Condition;

Event

objeto de evento, verEvent

1
Event coroutine.Event;

Worker

Objeto de trabajo de hilo independiente, verWorker

1
Worker coroutine.Worker;

función estática

start

Inicia una fibra y devuelve el objeto de fibra.

1 2
static 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 2
static 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 3
static 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 3
static 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.

1
static 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

1
static Fiber coroutine.current();

Resultados de devolución:

  • Fiber, el objeto de fibra actual

sleep

Pausar la fibra actual durante el tiempo especificado

1
static 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

1
static 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

1
static Integer coroutine.spareFibers;

vmid

Entero, consulta el actualvmnúmero de serie

1
static 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

1
static Integer coroutine.loglevel;