Modul Grundmodul

Modul-Coroutine

Parallelitätskontrollmodul

coroutineDas Modul stellt eine fiberAPI zur Steuerung der Ausführungsreihenfolge bereit. Es ermöglicht Entwicklern, manuell zu wechseln fiberund so kollaboratives Multitasking zu ermöglichen. coroutineEine wichtige Funktion des Moduls ist sleepdie Funktion, die es dem aktuell ausgeführten fiberModul ermöglicht, die CPU abzugeben und andere fiberModule laufen zu lassen.

Hier ist ein einfacher Beispielcode, der die Verwendung coroutinedes Moduls demonstriert:

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

Im obigen Code definieren wir zwei Funktionen foound barverwenden dann coroutine.startdie Funktion, um beide zu starten fiber. In jedem Fall fibernutzen wir coroutine.sleepdie Funktion, um die CPU freizugeben und andere fiberlaufen zu lassen.

Objekt

Lock

Objekt sperren, sieheLock

1
Lock coroutine.Lock;

Semaphore

Semaphorobjekt, sieheSemaphore

1
Semaphore coroutine.Semaphore;

Condition

Bedingungsvariablenobjekt, sieheCondition

1
Condition coroutine.Condition;

Event

Ereignisobjekt, sieheEvent

1
Event coroutine.Event;

Worker

Unabhängiges Thread-Arbeitsobjekt, sieheWorker

1
Worker coroutine.Worker;

statische Funktion

start

Startet eine Fiber und gibt das Fiber-Objekt zurück

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

Aufrufparameter:

  • func: Funktion, geben Sie die von der Faser ausgeführte Funktion an
  • args: ..., eine verschiedene Folge von Argumenten, die innerhalb der Faser an die Funktion übergeben werden

Rückgabeergebnisse:

  • Fiber, gibt das Faserobjekt zurück

parallel

Führen Sie eine Reihe von Funktionen parallel aus und warten Sie auf die Rückkehr

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

Aufrufparameter:

  • funcs: Array, Array parallel ausgeführter Funktionen
  • fibers: Ganzzahl, begrenzt die Anzahl gleichzeitiger Fasern, der Standardwert ist -1, aktiviert die gleiche Anzahl von Fasern wie Funktionen

Rückgabeergebnisse:

  • Array, gibt ein Array von Funktionsausführungsergebnissen zurück

Führen Sie parallel eine Funktion aus, um einen Datensatz zu verarbeiten, und warten Sie auf die Rückgabe

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

Aufrufparameter:

  • datas: Array, Datenarray zur parallelen Ausführung
  • func: Funktion, parallel ausgeführte Funktion
  • fibers: Ganzzahl, begrenzt die Anzahl gleichzeitiger Fasern, der Standardwert ist -1, aktiviert die gleiche Anzahl von Fasern wie Daten

Rückgabeergebnisse:

  • Array, gibt ein Array von Funktionsausführungsergebnissen zurück

Führen Sie eine Funktion mehrmals parallel aus und warten Sie auf die Rückkehr

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

Aufrufparameter:

  • func: Funktion, die Anzahl der parallel ausgeführten Funktionen
  • num: Ganzzahl, Anzahl der wiederholten Aufgaben
  • fibers: Ganzzahl, begrenzt die Anzahl gleichzeitiger Fasern, der Standardwert ist -1, aktiviert die gleiche Anzahl von Fasern wie Funktionen

Rückgabeergebnisse:

  • Array, gibt ein Array von Funktionsausführungsergebnissen zurück

Führen Sie eine Reihe von Funktionen parallel aus und warten Sie auf die Rückkehr

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

Aufrufparameter:

  • funcs: ..., eine Reihe parallel ausgeführter Funktionen

Rückgabeergebnisse:

  • Array, gibt ein Array von Funktionsausführungsergebnissen zurück

current

Gibt die aktuelle Faser zurück

1
static Fiber coroutine.current();

Rückgabeergebnisse:

  • Fiber, das aktuelle Faserobjekt

sleep

Pausieren Sie die aktuelle Glasfaser für die angegebene Zeit

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

Aufrufparameter:

  • ms: Ganzzahl, gibt die Pausenzeit in Millisekunden an. Der Standardwert ist 0, dh der Vorgang wird sofort wieder aufgenommen, wenn Zeit ist.

statische Eigenschaften

fibers

Array, gibt alle aktuell ausgeführten Fiber-Arrays zurück

1
static readonly Array coroutine.fibers;

spareFibers

Ganzzahl, Abfrage und Leerlauf setzenFiberMenge: Wenn der Server-Jitter groß ist, kann der Leerlauf entsprechend erhöht werdenFiberMenge. Der Standardwert ist 256

1
static Integer coroutine.spareFibers;

vmid

Ganzzahl, Abfrage des StromsvmSeriennummer

1
static readonly Integer coroutine.vmid;

loglevel

Geben Sie eine Ganzzahl ein, ändern Sie diese und fragen Sie sie abvmDer Ausgabepegel wird zum Filtern der Ausgabeinformationen verwendet. Der Standardwert istconsole.NOTSET, alles ausgeben

1
static Integer coroutine.loglevel;