Pregunta

¿Cómo podría siquiera empezar a forzar un proceso secundario utilizando Haskell en primer lugar?

Además, si las tuberías son una solución obvia a la pregunta de intercambio de datos, ¿hay alguna otra forma de hacerlo además de usar tuberías? Estoy familiarizado con el uso de segmentos de memoria compartida en C (las funciones shmget, * shmat, shmdt y shmctl). ¿Podría Haskell ser capaz de imitar esto? Si es así, ¿cómo?

Estaría muy agradecido por cualquier ayuda que pueda ahorrar.

Debo admitir que soy muy nuevo en los lenguajes de programación funcionales, más aún cuando se trata de Haskell. Así que perdóname (y corríjame) si dije algo tonto.

¿Fue útil?

Solución

Mejor aún, use Software Transactional Memory, es decir, TVars y TChannels.

Recomendará el mismo libro, capítulo diferente: http: // book. realworldhaskell.org/read/software-transactional-memory.html

Aquí hay un buen pequeño ejemplo de esta técnica en acción: http://sequence.complete.org / node / 257

Otros consejos

El OP preguntó sobre la comunicación con un subproceso, no con un hilo. Para eso, las tuberías son una forma perfectamente fina de hacerlo. También puede llamar a la función de la biblioteca C directamente desde Haskell si lo desea, aunque eso podría ser complicado.

Esta pregunta tiene una mejor respuesta aquí: ¿Hay alguna biblioteca estándar de Haskell que se ocupe de la comunicación de procesos?

usa MVars o Channels. Vea el capítulo 24 de RealWorld Haskell:    http://book.realworldhaskell.org/read/concurrent-and- multicore-schedule.html

Si realmente quieres unir un proceso, al estilo de Unix, necesitas usar forkProcess como se indica en http://hackage.haskell.org/package/unix-2.4.2.0/docs/System-Posix-Process.html

En este caso, MVars y TVars no realizan comunicación entre procesos, por lo que no puede usarlos para hacer IPC. Todas las técnicas estándar para IPC (tuberías, enchufes, etc.) aún funcionan. Si quieres algo más de alto nivel, visita Cloud Haskell http://www.haskell.org/haskellwiki/ Cloud_Haskell

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top