ObjectEvent
Das Event-Modul stellt ein Event-Objekt für kollaborative gemeinsame Datenoperationen bereit. Es ermöglicht synchronisierte Operationen zwischen mehreren Fasern (Coroutinen), um kooperatives Multitasking zu erreichen. Das Ereignisobjekt verfügt über drei Methoden: Warten, Pulsieren und Löschen. Die Wartemethode blockiert die aktuelle Faser, bis das Ereignis ausgelöst wird, die Impulsmethode weckt alle Fasern auf, die auf das Ereignis warten, und die Löschmethode setzt das Ereignisflag auf zurück FALSCH. durch die Nutzungcoroutine.EventMit dem Modul können Entwickler die Ausführungssequenz und den Datenaustausch zwischen Fasern steuern, um komplexe Geschäftslogik zu implementieren.
Angenommen, wir müssen Daten zwischen zwei Fasern austauschen, aber die Reihenfolge ihrer Ausführung ist ungewiss. Sie können die Ausführungsreihenfolge von Fasern über ein Ereignisobjekt steuern, um sicherzustellen, dass eine Faser ausgelöst wird, bevor die andere ausgeführt wird. Faserereignisse.
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);
}
});
Im obigen Beispiel haben wir ein Ereignisobjekt evt erstellt, die Wartemethode in Faser 1 verwendet, um auf das Auslösen des Ereignisses zu warten, und die Impulsmethode verwendet, um das Ereignis in Faser 2 auszulösen. Wenn i gleich 5 ist, löst Faser 2 aus Ereignis. , Fiber 1 wird durch das Abhören von Ereignissen aktiviert und setzt die Ausführung fort. Dabei werden keine Sperren oder andere Synchronisationstools zwischen den beiden Fasern verwendet, sondern sie sorgen für die Datensynchronisation auf Faserebene.
Erbschaftsverhältnis
Konstrukteur
Event
Ereignisobjektkonstruktor
1new Event(Boolean value = false);
Aufrufparameter:
- value: Boolescher Wert, gibt an, ob gewartet werden soll. Warten, wenn wahr, der Standardwert ist falsch
Mitgliedsfunktion
isSet
Bestimmen Sie, ob das Ereignisobjekt wahr ist
1Boolean Event.isSet();
Rückgabeergebnisse:
- Boolean, wenn das Ereignis wahr ist, geben Sie true zurück
set
Aktivieren Sie das Ereignis (ändern Sie den Ereignisstatus auf „True“) und rufen Sie „pulse()“ auf.
1Event.set();
pulse
Aktivieren Sie alle Fasern, die auf dieses Ereignis warten
1Event.pulse();
clear
Ereignis zurücksetzen (Ereignisstatus auf „false“ ändern)
1Event.clear();
wait
auf ein Ereignis warten
1Event.wait();
acquire
Übernehmen Sie den Besitz des Schlosses
1Boolean Event.acquire(Boolean blocking = true);
Aufrufparameter:
- blocking: Boolescher Wert, gibt an, ob gewartet werden soll. Warten, wenn wahr, der Standardwert ist wahr
Rückgabeergebnisse:
- Boolean, gibt zurück, ob die Sperre erfolgreich erworben wurde, true zeigt den erfolgreichen Erwerb an.
Die Acquire-Methode wird verwendet, um den Besitz der Sperre zu erlangen. Wenn sich die Sperre im erwerbbaren Zustand befindet, gibt diese Methode sofort „true“ zurück.
Wenn die Sperre nicht erworben werden kann und die Blockierung wahr ist, geht die aktuelle Faser in den Ruhezustand. Wenn andere Fasern die Sperre aufheben, gibt diese Methode „true“ zurück.
Wenn die Sperre nicht erworben werden kann und die Blockierung falsch ist, gibt die Methode „false“ zurück.
release
Geben Sie den Besitz des Schlosses frei
1Event.release();
Diese Methode gibt den Besitz der Sperre frei oder löst einen Fehler aus, wenn die aktuelle Faser nicht Eigentümer der Sperre ist.
count
Fragen Sie die aktuelle Anzahl der wartenden Aufgaben ab
1Integer Event.count();
Rückgabeergebnisse:
- Integer, gibt die Anzahl der Aufgaben zurück
toString
Gibt die Zeichenfolgendarstellung des Objekts zurück. Im Allgemeinen wird „[Native Object]“ zurückgegeben. Das Objekt kann gemäß seinen eigenen Eigenschaften neu implementiert werden.
1String Event.toString();
Rückgabeergebnisse:
- String, gibt die Zeichenfolgendarstellung des Objekts zurück
toJSON
Gibt eine Darstellung des Objekts im JSON-Format zurück und gibt im Allgemeinen eine Sammlung lesbarer Eigenschaften zurück, die vom Objekt definiert werden.
1Value Event.toJSON(String key = "");
Aufrufparameter:
- key: Zeichenfolge, nicht verwendet
Rückgabeergebnisse:
- Value, gibt einen Wert zurück, der JSON serialisierbar enthält