Existe-t-il un moyen de créer des threads pour exécuter plusieurs méthodes à la fois ?
De cette façon, si une méthode échoue entre-temps, tous les autres threads seront tués.
Existe-t-il un moyen de créer des threads pour exécuter plusieurs méthodes à la fois ?
De cette façon, si une méthode échoue entre-temps, tous les autres threads seront tués.
Nouvelle réponse : Alors que node.js n'avait pas la possibilité d'utiliser le threading de manière native, cette possibilité a été ajoutée depuis. Voir https://nodejs.org/api/worker_threads.html pour les détails.
Ancienne réponse : Chaque processus node.js est mono-threaded par conception. Par conséquent, pour obtenir des threads multiples, vous devez avoir plusieurs processus (comme d'autres posters l'ont souligné, il existe également des bibliothèques que vous pouvez lier et qui vous donneront la possibilité de travailler avec des threads dans Node, mais cette capacité n'existe pas sans ces bibliothèques. Voir la réponse de Shawn Vincent faisant référence à https://github.com/audreyt/node-webworker-threads )
Vous pouvez lancer des processus enfants à partir de votre processus principal, comme indiqué ici dans la documentation de node.js : http://nodejs.org/api/child_process.html . Les exemples sont assez bons sur cette page et sont assez simples.
Votre processus parent peut alors surveiller l'événement de fermeture de n'importe quel processus qu'il a lancé et peut ensuite forcer la fermeture des autres processus que vous avez lancés pour obtenir le type de stratégie d'arrêt unique dont vous parlez.
Voir aussi : Node.js sur les machines multi-cœurs
Il existe également au moins une bibliothèque permettant de faire du threading natif à partir de Node.js : node-webworker-threads.
https://github.com/audreyt/node-webworker-threads
Il s'agit essentiellement de la mise en œuvre de la API du navigateur Web Worker pour node.js.
Mise à jour 2 :
Depuis Node.js 12 LTS Fils de travail son stable .
Mise à jour 1 :
Du nœud v11.7.0 vous n'avez pas besoin d'utiliser --experimental-worker
drapeau.
Note de publication : https://nodejs.org/en/blog/release/v11.7.0/
A partir de Node 10.5, le support du multi threading est maintenant disponible. mais c'est expérimental . J'espère que cela deviendra bientôt stable.
Consultez les ressources suivantes :
Vous pouvez obtenir le multithreading en utilisant Napa.js.
https://github.com/Microsoft/napajs
"Napa.js est un runtime JavaScript multithreadé construit sur V8, qui a été conçu à l'origine pour développer des services hautement itératifs avec des performances non compromises dans Bing. Au fur et à mesure de son évolution, nous trouvons utile de compléter Node.js dans les tâches liées au CPU, avec la possibilité d'exécuter JavaScript dans plusieurs isolats V8 et de communiquer entre eux. Napa.js est exposé en tant que module Node.js, mais il peut également être intégré dans un processus hôte sans dépendance vis-à-vis de Node.js."
J'avais besoin réel le multithreading dans Node.js et ce qu'il faut en faire a fonctionné pour moi était le fils paquet. Il crée un autre processus ayant sa propre boucle de messages Node.js, afin qu'ils ne se bloquent pas mutuellement. L'installation est facile et la documentation vous permet d'être rapidement opérationnel. Votre programme principal et les travailleurs peuvent communiquer dans les deux sens et les "threads" des travailleurs peuvent être tués si nécessaire.
Comme le multithreading et Node.js est un sujet compliqué et largement discuté, il a été assez difficile de trouver un paquet qui fonctionne pour mon exigence spécifique. Pour mémoire, ces ne fonctionne pas pour moi :
require
-les modules de travail dont j'avais besoinEt pour ceux qui se demandent pourquoi j'avais besoin réel multithreading : Pour une application impliquant le Raspberry Pi et les interruptions. Un thread gère ces interruptions et un autre s'occupe du stockage des données (et plus encore).
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.