Modul-Coroutine
Parallelitätskontrollmodul
coroutine
Das Modul stellt eine fiber
API zur Steuerung der Ausführungsreihenfolge bereit. Es ermöglicht Entwicklern, manuell zu wechseln fiber
und so kollaboratives Multitasking zu ermöglichen. coroutine
Eine wichtige Funktion des Moduls ist sleep
die Funktion, die es dem aktuell ausgeführten fiber
Modul ermöglicht, die CPU abzugeben und andere fiber
Module laufen zu lassen.
Hier ist ein einfacher Beispielcode, der die Verwendung coroutine
des Moduls demonstriert:
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);
Im obigen Code definieren wir zwei Funktionen foo
und bar
verwenden dann coroutine.start
die Funktion, um beide zu starten fiber
. In jedem Fall fiber
nutzen wir coroutine.sleep
die Funktion, um die CPU freizugeben und andere fiber
laufen zu lassen.
Objekt
Lock
Objekt sperren, sieheLock
1Lock coroutine.Lock;
Semaphore
Semaphorobjekt, sieheSemaphore
1Semaphore coroutine.Semaphore;
Condition
Bedingungsvariablenobjekt, sieheCondition
1Condition coroutine.Condition;
Event
Ereignisobjekt, sieheEvent
1Event coroutine.Event;
Worker
Unabhängiges Thread-Arbeitsobjekt, sieheWorker
1Worker coroutine.Worker;
statische Funktion
start
Startet eine Fiber und gibt das Fiber-Objekt zurück
1
2static 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
2static 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
3static 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
3static 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
1static 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
1static Fiber coroutine.current();
Rückgabeergebnisse:
- Fiber, das aktuelle Faserobjekt
sleep
Pausieren Sie die aktuelle Glasfaser für die angegebene Zeit
1static 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
1static 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
1static Integer coroutine.spareFibers;
vmid
Ganzzahl, Abfrage des StromsvmSeriennummer
1static 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
1static Integer coroutine.loglevel;