2012-12-12 3 views
2

Ceci est une vraie question.Ocaml: Y at-il un moyen de passer des objets entre les processus?

Je travaille avec des tubes nommés pour transmettre des données entre des processus/threads, mais ces données sont de type string est-il possible de passer et de s'opposer de cette façon?

Est-il possible de passer un objet?

Mon problème est le suivant:

J'ai un missile de fil, et un processus mondial. World reçoit l'emplacement du missile et renvoie le calcul du nouvel emplacement.

En ce moment je le fais en prenant des informations de l'écriture de la chaîne dans le tuyau. Y a-t-il un moyen de faire passer cela comme un objet ou un tuple?

Si quelqu'un pouvait m'aider avec ça, ce serait génial! Merci.

Répondre

6

Vous pouvez utiliser le module Marshal pour transmettre des valeurs OCaml arbitraires via un bytestream. Il est difficile de bien faire les choses, donc je vous conseille de lire le Marshal section of the manual. L'essentiel est que ça ne passe que des valeurs, pas des types. Ainsi, votre processus de réception devra avoir une définition du type exact de l'objet transmis, et vous devez spécifier le type explicitement dans le récepteur.

Les valeurs contenant des fonctions, qui incluent des objets de type OO, ne peuvent pas être rassemblées sauf entre des copies du même programme. Peut-être que cela s'applique à votre cas (puisque vous mentionnez que vous avez un thread), mais il pourrait être préférable d'utiliser un tuple de toute façon.

+0

Merci, je vais lire et voir si cela correspond à mes besoins! –

Questions connexes