ObjectGebeurtenis
De Event-module biedt een gebeurtenisobject voor gezamenlijke gedeelde gegevensbewerkingen. Het maakt gesynchroniseerde operaties tussen meerdere vezels (coroutines) mogelijk om coöperatieve multitasking te bereiken. Het gebeurtenisobject heeft drie methoden: wachten, pulseren en wissen. De wachtmethode blokkeert de huidige vezel totdat de gebeurtenis wordt geactiveerd, de pulsmethode maakt alle vezels wakker die op de gebeurtenis wachten, en de wismethode reset de gebeurtenisvlag naar vals. door het gebruiken vancoroutine.EventModule kunnen ontwikkelaars de uitvoeringsvolgorde en het delen van gegevens tussen vezels controleren om complexe bedrijfslogica te implementeren.
Stel dat we gegevens moeten delen tussen twee vezels, maar de volgorde van uitvoering ervan is onzeker. U kunt de uitvoeringsvolgorde van vezels regelen via een gebeurtenisobject om ervoor te zorgen dat de ene vezel wordt geactiveerd voordat de andere wordt uitgevoerd.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19const coroutine = require('coroutine');
var evt = new coroutine.Event();
coroutine.start(function() {
console.log('[1] wait for event');
evt.wait();
console.log('[1] receive event');
});
coroutine.start(function() {
loop: for (var i = 0; i < 10; i++) {
console.log('[2] do some work');
if (i === 5) {
evt.pulse();
}
coroutine.sleep(1000);
}
});
In het bovenstaande voorbeeld hebben we een gebeurtenisobject evt gemaakt, de wachtmethode in vezel 1 gebruikt om te wachten tot de gebeurtenis werd geactiveerd, en de pulsmethode gebruikt om de gebeurtenis in vezel 2 te activeren. Wanneer i gelijk is aan 5, activeert vezel 2 de gebeurtenis. , Fiber 1 wordt gewekt door luisteren naar gebeurtenissen en gaat door met de uitvoering. Bij dit proces worden er geen sloten of andere synchronisatietools gebruikt tussen de twee vezels, maar zorgen ze wel voor datasynchronisatie op vezelniveau.
erfenis relatie
Constructeur
Event
gebeurtenisobjectconstructor
1new Event(Boolean value = false);
Oproepparameters:
- value: Booleaanse waarde, specificeert of er moet worden gewacht, gewacht wanneer waar, standaard is onwaar
lid functie
isSet
Bepaal of het gebeurtenisobject waar is
1Boolean Event.isSet();
Resultaten retourneren:
- BooleanAls de gebeurtenis waar is, retourneert u waar
set
Activeer de gebeurtenis (verander de gebeurtenisstatus in true) en roep pulse() aan
1Event.set();
pulse
Activeer alle vezels die op deze gebeurtenis wachten
1Event.pulse();
clear
Gebeurtenis resetten (verander de gebeurtenisstatus naar false)
1Event.clear();
wait
wachten op een gebeurtenis
1Event.wait();
acquire
Word eigenaar van het slot
1Boolean Event.acquire(Boolean blocking = true);
Oproepparameters:
- blocking: Booleaanse waarde, specificeert of er moet worden gewacht, gewacht wanneer waar, standaard is waar
Resultaten retourneren:
- Boolean, geeft terug of het slot met succes is verworven, waar geeft een succesvolle acquisitie aan.
Om het eigendom van het slot te verkrijgen wordt gebruik gemaakt van de acquire-methode. Wanneer het slot zich in de verkrijgbare staat bevindt, retourneert deze methode onmiddellijk true.
Wanneer het slot niet kan worden verkregen en de blokkering waar is, gaat de huidige vezel in de slaapstand. Wanneer andere vezels het slot vrijgeven, retourneert deze methode waar.
Wanneer de vergrendeling niet kan worden verkregen en de blokkering onwaar is, retourneert de methode onwaar.
release
Geef het eigendom van het slot vrij
1Event.release();
Met deze methode wordt het eigendom van het slot vrijgegeven of wordt er een fout gegenereerd als de huidige glasvezel geen eigenaar van het slot is.
count
Vraag het huidige aantal wachtende taken op
1Integer Event.count();
Resultaten retourneren:
- Integer, retourneert het aantal taken
toString
Retourneert de tekenreeksweergave van het object. Over het algemeen wordt '[Native Object]' geretourneerd. Het object kan opnieuw worden geïmplementeerd op basis van zijn eigen kenmerken.
1String Event.toString();
Resultaten retourneren:
- String, retourneert de tekenreeksrepresentatie van het object
toJSON
Retourneert een weergave in JSON-indeling van het object, waarbij doorgaans een verzameling leesbare eigenschappen wordt geretourneerd die door het object zijn gedefinieerd.
1Value Event.toJSON(String key = "");
Oproepparameters:
- key: Tekenreeks, niet gebruikt
Resultaten retourneren:
- Value, retourneert een waarde die JSON-serialiseerbaar bevat