Modulo modulo base

Coroutine del modulo

Modulo di controllo della concorrenza

coroutineIl modulo fornisce un'API fiberper il controllo dell'ordine di esecuzione. Consente agli sviluppatori di passare manualmente fiber, consentendo il multitasking collaborativo. coroutineUna funzione importante del modulo è sleepla funzione che consente al fibermodulo attualmente in esecuzione di rinunciare alla CPU e lasciare fiberfunzionare altri moduli.

Ecco un semplice esempio di codice che dimostra come utilizzare coroutineil modulo:

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);

Nel codice sopra, definiamo due funzioni fooe barquindi usiamo coroutine.startla funzione per avviarle entrambe fiber. In ciascuno di essi fiberutilizziamo coroutine.sleepla funzione per liberare la CPU e consentire fiberl'esecuzione degli altri.

oggetto

Lock

bloccare l'oggetto, vedereLock

1
Lock coroutine.Lock;

Semaphore

oggetto semaforo, vediSemaphore

1
Semaphore coroutine.Semaphore;

Condition

oggetto variabile di condizione, vedereCondition

1
Condition coroutine.Condition;

Event

oggetto evento, vedereEvent

1
Event coroutine.Event;

Worker

Oggetto di lavoro thread indipendente, vedereWorker

1
Worker coroutine.Worker;

funzione statica

start

Avvia una fibra e restituisce l'oggetto fibra

1 2
static Fiber coroutine.start(Function func, ...args);

Parametri di chiamata:

  • func: Funzione, specifica la funzione eseguita dalla fibra
  • args: ..., una sequenza variadica di argomenti che verrà passata alla funzione all'interno della fibra

Risultati restituiti:

  • Fiber, restituisce l'oggetto fibra

parallel

Esegui una serie di funzioni in parallelo e attendi il ritorno

1 2
static Array coroutine.parallel(Array funcs, Integer fibers = -1);

Parametri di chiamata:

  • funcs: Array, array di funzioni eseguite in parallelo
  • fibers: Intero, limita il numero di fibre simultanee, il valore predefinito è -1, abilita lo stesso numero di fibre delle funzioni

Risultati restituiti:

  • Array, restituisce una matrice di risultati di esecuzione della funzione

Esegui una funzione in parallelo per elaborare un insieme di dati e attendi il ritorno

1 2 3
static Array coroutine.parallel(Array datas, Function func, Integer fibers = -1);

Parametri di chiamata:

  • datas: Array, array di dati per l'esecuzione parallela
  • func: Funzione, funzione eseguita in parallelo
  • fibers: Numero intero, limita il numero di fibre simultanee, il valore predefinito è -1, abilita lo stesso numero di fibre dei dati

Risultati restituiti:

  • Array, restituisce una matrice di risultati di esecuzione della funzione

Esegui una funzione più volte in parallelo e attendi il ritorno

1 2 3
static Array coroutine.parallel(Function func, Integer num, Integer fibers = -1);

Parametri di chiamata:

  • func: Funzione, il numero di funzioni eseguite in parallelo
  • num: numero intero, numero di attività ripetute
  • fibers: Intero, limita il numero di fibre simultanee, il valore predefinito è -1, abilita lo stesso numero di fibre delle funzioni

Risultati restituiti:

  • Array, restituisce una matrice di risultati di esecuzione della funzione

Esegui una serie di funzioni in parallelo e attendi il ritorno

1
static Array coroutine.parallel(...funcs);

Parametri di chiamata:

  • funcs: ..., un insieme di funzioni eseguite in parallelo

Risultati restituiti:

  • Array, restituisce una matrice di risultati di esecuzione della funzione

current

Restituisce la fibra corrente

1
static Fiber coroutine.current();

Risultati restituiti:

  • Fiber, l'oggetto fibra corrente

sleep

Mettere in pausa la fibra corrente per il tempo specificato

1
static coroutine.sleep(Integer ms = 0) async;

Parametri di chiamata:

  • ms: Numero intero, specifica il tempo di pausa, in millisecondi, il valore predefinito è 0, ovvero l'operazione verrà ripresa immediatamente quando c'è tempo.

proprietà statiche

fibers

Array, restituisce tutti gli array di fibre attualmente in esecuzione

1
static readonly Array coroutine.fibers;

spareFibers

Intero, interroga e imposta inattivoFiberQuantità: quando il jitter del server è elevato, l'inattività può essere aumentata in modo appropriatoFiberquantità. L'impostazione predefinita è 256

1
static Integer coroutine.spareFibers;

vmid

Intero, interroga la correntevmnumero di serie

1
static readonly Integer coroutine.vmid;

loglevel

Intero, modificalo e interrogalovmIl livello di output viene utilizzato per filtrare le informazioni di output. L'impostazione predefinita èconsole.NOTSET, emetti tutto

1
static Integer coroutine.loglevel;