La fourche d'un processus enfant et injecter de la dépendance
J'ai actuellement une opération dans un module qui bloque, donc je suis à la recherche à faire dans un processus enfant que j'ai de la fourche à la place.
Si je veux le faire, alors j'ai bien sûr besoin de modifier l'architecture de mon module. Le module nécessite qu'une dépendance est injecté en appelant le module en tant que fonction, en passant dans la dépendance, comme suit:
var dependency = { name: "Bob" }
require('worker')(dependency)
Ensuite dans mon worker
module:
module.exports = function (dependency) {
//Outputs { name: "Bob" }
console.log(dependency)
}
Comment puis-je tourner cet exemple dans un processus enfant en cours de fourche?
fourche de l'enfant et de l'envoyer ensuite la dépendance du parent à l'aide de l'enfant.send(message). L'objet que vous avez pass ne peuvent pas être cyclique. nodejs.org/api/...
J'ai besoin d'utiliser
eh bien, j'ai été faire un exemple, lorsque vous avez accepté une autre réponse, regarde!
Merci @GabrielLlamas
J'ai besoin d'utiliser
child.send(message)
plus tard d'envoyer des données à la personne du travailleur (pas de dépendances). Je ne comprends pas comment mon travailleur peut établir une distinction entre ce genre de messages, il est envoyé, et comment les gérer.eh bien, j'ai été faire un exemple, lorsque vous avez accepté une autre réponse, regarde!
Merci @GabrielLlamas
OriginalL'auteur | 2013-03-12
Vous devez vous connecter pour publier un commentaire.
Lors de l'utilisation .fork() vous échappez à un tout processus distinct, de sorte que vous ne sont pas en mesure de passer autour de références entre le parent et l'enfant, les processus (et sont limitées à la messagerie après le processus a été créé).
Une approche ne nécessitant pas de messagerie est de passer des arguments (dans un tableau) lorsque vous fourche le processus. Bien que je crois que vous allez avoir à coller avec chaîne simple/nombre de valeurs (mais il semble que cela pourrait être suffisant pour vous à partir du code). Ex.:
Au plus haut niveau:
Dans le processus de travail:
Mise à jour
Si vous voulez vraiment aller de la messagerie de l'itinéraire (que j'avais hésite pas à recommander si vous avez déjà besoin d'envoyer des messages), puis vous pourrait permettre de différencier les types de messages à quelque chose comme ceci (il y a peut-être plus élégante des façons):
Au plus haut niveau:
Dans le processus de travail:
Ouais, personnellement j'avais stringify ou, si elle n'est pas trop complexe, hack place dans il les électeurs temporairement. Je n'aime pas me compliquer la messagerie logique à la fois l'installation et la normale 'runtime' trucs.
ne parvient pas à nœud a/b/c/app.js"
Aimeriez-vous faire plus tard ou tout simplement stringify et envoyer en tant que arg?
Je serais probablement stringify
OriginalL'auteur UpTheCreek
Dans le module principal:
Et dans le processus de l'enfant module (worker.js):
OriginalL'auteur brianmaissy
un.js
child.js
b.js
Imprime: salut, tsa
OriginalL'auteur Gabriel Llamas