Module de base

Coroutine du module

Module de contrôle de concurrence

coroutineLe module fournit une fiberAPI pour contrôler l'ordre d'exécution. Il permet aux développeurs de basculer manuellement fiber, permettant le multitâche collaboratif. coroutineUne fonction importante du module est sleepla fonction qui permet au fibermodule en cours d'exécution d'abandonner le processeur et de laisser les autres fibermodules s'exécuter.

Voici un exemple de code simple qui montre comment utiliser coroutinele module :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
const 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);

Dans le code ci-dessus, nous définissons deux fonctions foo, barpuis utilisons coroutine.startla fonction pour démarrer les deux fiber. Dans chacun fiber, nous utilisons coroutine.sleepla fonction pour libérer le CPU et laisser les autres fiberfonctionner.

objet

Lock

verrouiller l'objet, voirLock

1
Lock coroutine.Lock;

Semaphore

objet sémaphore, voirSemaphore

1
Semaphore coroutine.Semaphore;

Condition

objet variable de condition, voirCondition

1
Condition coroutine.Condition;

Event

objet événement, voirEvent

1
Event coroutine.Event;

Worker

Objet de travail de thread indépendant, voirWorker

1
Worker coroutine.Worker;

fonction statique

start

Démarre une fibre et renvoie l'objet fibre

1 2
static Fiber coroutine.start(Function func, ...args);

Paramètres d'appel :

  • func: Fonction, précise la fonction exécutée par la fibre
  • args: ..., une séquence variadique d'arguments qui sera transmise à la fonction au sein de la fibre

Résultats de retour :

  • Fiber, renvoie l'objet fibre

parallel

Exécuter un ensemble de fonctions en parallèle et attendre le retour

1 2
static Array coroutine.parallel(Array funcs, Integer fibers = -1);

Paramètres d'appel :

  • funcs: Tableau, tableau de fonctions exécutées en parallèle
  • fibers: Nombre entier, limite le nombre de fibres simultanées, la valeur par défaut est -1, active le même nombre de fibres que les fonctions

Résultats de retour :

  • Array, renvoie un tableau de résultats d'exécution de fonction

Exécuter une fonction en parallèle pour traiter un ensemble de données et attendre le retour

1 2 3
static Array coroutine.parallel(Array datas, Function func, Integer fibers = -1);

Paramètres d'appel :

  • datas: Array, tableau de données pour une exécution parallèle
  • func: Fonction, fonction exécutée en parallèle
  • fibers: Nombre entier, limite le nombre de fibres simultanées, la valeur par défaut est -1, active le même nombre de fibres que les données

Résultats de retour :

  • Array, renvoie un tableau de résultats d'exécution de fonction

Exécuter une fonction plusieurs fois en parallèle et attendre le retour

1 2 3
static Array coroutine.parallel(Function func, Integer num, Integer fibers = -1);

Paramètres d'appel :

  • func: Fonction, le nombre de fonctions exécutées en parallèle
  • num: Entier, nombre de tâches répétées
  • fibers: Nombre entier, limite le nombre de fibres simultanées, la valeur par défaut est -1, active le même nombre de fibres que les fonctions

Résultats de retour :

  • Array, renvoie un tableau de résultats d'exécution de fonction

Exécuter un ensemble de fonctions en parallèle et attendre le retour

1
static Array coroutine.parallel(...funcs);

Paramètres d'appel :

  • funcs: ..., un ensemble de fonctions exécutées en parallèle

Résultats de retour :

  • Array, renvoie un tableau de résultats d'exécution de fonction

current

Renvoie la fibre actuelle

1
static Fiber coroutine.current();

Résultats de retour :

  • Fiber, l'objet fibre actuel

sleep

Mettre en pause la fibre actuelle pendant la durée spécifiée

1
static coroutine.sleep(Integer ms = 0) async;

Paramètres d'appel :

  • ms: Entier, spécifie le temps de pause, en millisecondes, la valeur par défaut est 0, c'est-à-dire que l'opération reprendra immédiatement lorsqu'il y aura du temps.

propriétés statiques

fibers

Tableau, renvoie tous les tableaux de fibres en cours d'exécution

1
static readonly Array coroutine.fibers;

spareFibers

Entier, requête et mise au reposFiberQuantité : lorsque la gigue du serveur est importante, l'inactivité peut être augmentée de manière appropriéeFiberquantité. La valeur par défaut est 256

1
static Integer coroutine.spareFibers;

vmid

Entier, interrogez le courantvmnuméro de série

1
static readonly Integer coroutine.vmid;

loglevel

Entier, modifiez et interrogez cecivmLe niveau de sortie est utilisé pour filtrer les informations de sortie. La valeur par défaut estconsole.NOTSET, affiche tout

1
static Integer coroutine.loglevel;