Objet objet intégré

ObjetEvénement

Le module Événement fournit un objet événement pour les opérations collaboratives sur les données partagées. Il permet des opérations synchronisées entre plusieurs fibres (coroutines) pour réaliser un multitâche coopératif. L'objet événement a trois méthodes : attendre, pulser et effacer. La méthode d'attente bloquera la fibre actuelle jusqu'à ce que l'événement soit déclenché, la méthode d'impulsion réveillera toutes les fibres en attente de l'événement et la méthode d'effacement réinitialisera l'indicateur d'événement à FAUX. en utilisantcoroutine.EventModule, les développeurs peuvent contrôler la séquence d'exécution et le partage de données entre les fibres pour mettre en œuvre une logique métier complexe.

Par exemple, supposons que nous ayons besoin de partager des données entre deux fibres, mais que l'ordre de leur exécution soit incertain. Vous pouvez contrôler l'ordre d'exécution des fibres via un objet événement pour garantir qu'une fibre est déclenchée avant que l'autre ne soit exécutée. Événements de fibre.

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); } });

Dans l'exemple ci-dessus, nous avons créé un objet événement evt, utilisé la méthode wait dans la fibre 1 pour attendre que l'événement soit déclenché et utilisé la méthode pulse pour déclencher l'événement dans la fibre 2. Lorsque i est égal à 5, la fibre 2 déclenche le événement. , la fibre 1 est réveillée grâce à l'écoute d'événement et continue son exécution. Dans ce processus, aucun verrou ou autre outil de synchronisation n'est utilisé entre les deux fibres, mais ils assurent la synchronisation des données au niveau de la fibre.

relation d'héritage

Constructeur

Event

constructeur d'objet événementiel

1
new Event(Boolean value = false);

Paramètres d'appel :

  • value: Booléen, spécifie s'il faut attendre, attendre quand vrai, la valeur par défaut est faux

fonction membre

isSet

Déterminer si l'objet événement est vrai

1
Boolean Event.isSet();

Résultats de retour :

  • Boolean, si l'événement est vrai, renvoie vrai

set

Activez l'événement (changez le statut de l'événement en vrai) et appelez pulse()

1
Event.set();

pulse

Activer toutes les fibres en attente de cet événement

1
Event.pulse();

clear

Réinitialiser l'événement (changer le statut de l'événement sur false)

1
Event.clear();

wait

attendre un événement

1
Event.wait();

acquire

Devenez propriétaire de la serrure

1
Boolean Event.acquire(Boolean blocking = true);

Paramètres d'appel :

  • blocking: Booléen, spécifie s'il faut attendre, attendre quand vrai, la valeur par défaut est vrai

Résultats de retour :

  • Boolean, indique si le verrou a été acquis avec succès, true indique une acquisition réussie.

La méthode d'acquisition est utilisée pour obtenir la propriété du verrou. Lorsque le verrou est dans l'état acquérable, cette méthode renvoie immédiatement true.

Lorsque le verrou ne peut pas être acquis et que le blocage est vrai, la fibre actuelle se met en veille. Lorsque d'autres fibres libèrent le verrou, cette méthode renvoie vrai.

Lorsque le verrou ne peut pas être acquis et que le blocage est faux, la méthode renvoie faux.


release

Libérer la propriété de la serrure

1
Event.release();

Cette méthode libérera la propriété du verrou ou générera une erreur si la fibre actuelle ne possède pas le verrou.


count

Interroger le nombre actuel de tâches en attente

1
Integer Event.count();

Résultats de retour :

  • Integer, renvoie le nombre de tâches

toString

Renvoie la représentation sous forme de chaîne de l'objet. Généralement, "[Native Object]" est renvoyé. L'objet peut être réimplémenté en fonction de ses propres caractéristiques.

1
String Event.toString();

Résultats de retour :

  • String, renvoie la représentation sous forme de chaîne de l'objet

toJSON

Renvoie une représentation au format JSON de l'objet, renvoyant généralement une collection de propriétés lisibles définies par l'objet.

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

Paramètres d'appel :

  • key: Chaîne, non utilisée

Résultats de retour :

  • Value, renvoie une valeur contenant du JSON sérialisable