Objekt integriertes Objekt

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 19
const 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

1
new 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

1
Boolean 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.

1
Event.set();

pulse

Aktivieren Sie alle Fasern, die auf dieses Ereignis warten

1
Event.pulse();

clear

Ereignis zurücksetzen (Ereignisstatus auf „false“ ändern)

1
Event.clear();

wait

auf ein Ereignis warten

1
Event.wait();

acquire

Übernehmen Sie den Besitz des Schlosses

1
Boolean 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

1
Event.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

1
Integer 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.

1
String 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.

1
Value Event.toJSON(String key = "");

Aufrufparameter:

  • key: Zeichenfolge, nicht verwendet

Rückgabeergebnisse:

  • Value, gibt einen Wert zurück, der JSON serialisierbar enthält