Módulo módulo básico

corrutinas do módulo

Módulo de control de concorrencia

coroutineOs módulos proporcionan unha API para controlar a orde de fiberexecución . Permite aos desenvolvedores cambiar manualmente fiber, permitindo a multitarefa cooperativa. coroutineUnha función importante do módulo é sleepa función , que permite que o que se está executando fiberceda a CPU para que outros fiberpoidan executarse .

Aquí tes un código de mostra sinxelo que demostra como usar coroutineo 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);

No código anterior, definimos dúas funcións fooe bar, e despois usamos coroutine.starta función para iniciar ambas fiber. fiberEn cada un , usamos coroutine.sleepa función para abandonar a CPU para que outros fiberse executen .

obxecto

Lock

bloquear obxecto, verLock

1
Lock coroutine.Lock;

Semaphore

obxecto semáforo, véxSemaphore

1
Semaphore coroutine.Semaphore;

Condition

obxecto variable de condición, véxCondition

1
Condition coroutine.Condition;

Event

obxecto do evento, véxaseEvent

1
Event coroutine.Event;

Worker

Obxecto traballador de fíos separado, consulteWorker

1
Worker coroutine.Worker;

función estática

start

Iniciar unha fibra e devolver o obxecto de fibra

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

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

1
static Fiber coroutine.current();

devolver resultado:

  • Fiber, o obxecto de fibra actual

sleep

Suspende a fibra actual durante o tempo especificado

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

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

1
static Integer coroutine.spareFibers;

vmid

Enteiro, consulta actualvmnúmero de serie

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

1
static Integer coroutine.loglevel;