Module coroutine
Gelijktijdigheidscontrolemodule
coroutine
De module biedt een fiber
API voor het controleren van de volgorde van uitvoering. Het stelt ontwikkelaars in staat handmatig te schakelen fiber
, waardoor gezamenlijke multitasking mogelijk wordt. coroutine
Een belangrijke functie van de module is sleep
de functie waarmee de momenteel uitgevoerde fiber
module de CPU kan opgeven en andere fiber
modules kan laten draaien.
Hier is een eenvoudige voorbeeldcode die laat zien hoe u coroutine
de module kunt gebruiken:
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);
In de bovenstaande code definiëren we twee functies foo
en bar
gebruiken we vervolgens coroutine.start
de functie om beide te starten fiber
. In elk fiber
gebruiken we coroutine.sleep
de functie om de CPU vrij te maken en anderen te laten fiber
werken.
voorwerp
Lock
object vergrendelen, zieLock
1Lock coroutine.Lock;
Semaphore
semafoorobject, zieSemaphore
1Semaphore coroutine.Semaphore;
Condition
voorwaarde variabel object, zieCondition
1Condition coroutine.Condition;
Event
gebeurtenisobject, zieEvent
1Event coroutine.Event;
Worker
Onafhankelijk draadwerkobject, zieWorker
1Worker coroutine.Worker;
statische functie
start
Start een vezel en retourneert het vezelobject
1
2static Fiber coroutine.start(Function func,
...args);
Oproepparameters:
- func: Functie: specificeer de functie die door de vezel wordt uitgevoerd
- args: ..., een variabele reeks argumenten die worden doorgegeven aan de functie binnen de vezel
Resultaten retourneren:
- Fiber, retourneert het vezelobject
parallel
Voer een reeks functies parallel uit en wacht op terugkeer
1
2static Array coroutine.parallel(Array funcs,
Integer fibers = -1);
Oproepparameters:
- funcs: Array, reeks functies die parallel worden uitgevoerd
- fibers: Geheel getal, beperkt het aantal gelijktijdige vezels, de standaardwaarde is -1, maakt hetzelfde aantal vezels mogelijk als funcs
Resultaten retourneren:
- Array, retourneert een array met functie-uitvoeringsresultaten
Voer parallel een functie uit om een set gegevens te verwerken en wacht op de terugkeer
1
2
3static Array coroutine.parallel(Array datas,
Function func,
Integer fibers = -1);
Oproepparameters:
- datas: Array, data-array voor parallelle uitvoering
- func: Functie, functie die parallel wordt uitgevoerd
- fibers: Geheel getal, beperkt het aantal gelijktijdige vezels, de standaardwaarde is -1, maakt hetzelfde aantal vezels mogelijk als data
Resultaten retourneren:
- Array, retourneert een array met functie-uitvoeringsresultaten
Voer een functie meerdere keren parallel uit en wacht op terugkeer
1
2
3static Array coroutine.parallel(Function func,
Integer num,
Integer fibers = -1);
Oproepparameters:
- func: Functie, het aantal parallel uitgevoerde functies
- num: geheel getal, aantal herhaalde taken
- fibers: Geheel getal, beperkt het aantal gelijktijdige vezels, de standaardwaarde is -1, maakt hetzelfde aantal vezels mogelijk als funcs
Resultaten retourneren:
- Array, retourneert een array met functie-uitvoeringsresultaten
Voer een reeks functies parallel uit en wacht op terugkeer
1static Array coroutine.parallel(...funcs);
Oproepparameters:
- funcs: ..., een reeks functies die parallel worden uitgevoerd
Resultaten retourneren:
- Array, retourneert een array met functie-uitvoeringsresultaten
current
Retourneert de huidige vezel
1static Fiber coroutine.current();
Resultaten retourneren:
- Fiber, het huidige vezelobject
sleep
Pauzeer de huidige vezel gedurende de opgegeven tijd
1static coroutine.sleep(Integer ms = 0) async;
Oproepparameters:
- ms: Geheel getal, specificeert de pauzetijd, in milliseconden, de standaardwaarde is 0, dat wil zeggen dat de bewerking onmiddellijk wordt hervat als er tijd is.
statische eigenschappen
fibers
Array, retourneert alle actieve glasvezelarrays
1static readonly Array coroutine.fibers;
spareFibers
Geheel getal, opvragen en inactief instellenFiberKwantiteit: wanneer de serverjitter groot is, kan de inactiviteit op passende wijze worden verhoogdFiberhoeveelheid. De standaardwaarde is 256
1static Integer coroutine.spareFibers;
vmid
Geheel getal, vraag de huidige opvmserienummer
1static readonly Integer coroutine.vmid;
loglevel
Integer, wijzig en bevraag ditvmHet uitvoerniveau wordt gebruikt om uitvoerinformatie te filteren. De standaardwaarde isconsole.NOTSET, voer alles uit
1static Integer coroutine.loglevel;