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
16const 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
1Lock coroutine.Lock;
Semaphore
objet sémaphore, voirSemaphore
1Semaphore coroutine.Semaphore;
Condition
objet variable de condition, voirCondition
1Condition coroutine.Condition;
Event
objet événement, voirEvent
1Event coroutine.Event;
Worker
Objet de travail de thread indépendant, voirWorker
1Worker coroutine.Worker;
fonction statique
start
Démarre une fibre et renvoie l'objet fibre
1
2static 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
2static 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
3static 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
3static 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
1static 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
1static 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
1static 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
1static 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
1static Integer coroutine.spareFibers;
vmid
Entier, interrogez le courantvmnuméro de série
1static 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
1static Integer coroutine.loglevel;
