كيف يمكن للمرء تبادل البيانات بين الأم والطفل عملية متشعب في حزقيل؟

StackOverflow https://stackoverflow.com/questions/238379

  •  04-07-2019
  •  | 
  •  

سؤال

وكيف لي أن أذهب حتى حول التفرع عملية تابعة باستخدام هاسكل في المقام الأول؟

وأيضا، إذا الأنابيب هي الحل الواضح لتبادل البيانات السؤال - هل هناك أي طريقة أخرى للقيام بذلك إلى جانب استخدام الأنابيب؟ أنا على دراية استخدام شرائح الذاكرة المشتركة في C (لshmget، * shmat، shmdt وshmctl وظائف). يمكن هاسكل تكون قادرة على تقليد هذا؟ إذا كان الأمر كذلك، كيف؟

وسأكون ممتنا جدا لأية مساعدة هل يمكن تجنيب.

ويجب أن أعترف أنا كثيرا الجديد لغات البرمجة الوظيفية، وحتى أكثر من ذلك عندما يتعلق الأمر هاسكل. فاغفر لي (ويرجى تصحيح لي) إذا قلت شيئا سخيفا.

هل كانت مفيدة؟

المحلول

والأفضل من ذلك، استخدام البرمجيات معاملات الذاكرة - وهذا هو، TVars وTChannels.

وسوف يوصي الكتاب نفسه، الفصل مختلف: HTTP: // الكتاب. realworldhaskell.org/read/software-transactional-memory.html

وهنا مثال صغير جيدا على هذا الأسلوب في العمل: http://sequence.complete.org / عقدة / 257

نصائح أخرى

ووOP سئل عن التواصل مع فرعي أو جانبي، وليس الموضوع. لذلك، الأنابيب هي طريقة ما يرام تماما للقيام بذلك. يمكنك أيضا استدعاء الدالة مكتبة C مباشرة من هاسكل إذا كنت تريد، على الرغم من أن يمكن أن تحصل صعبة.

وهذا السؤال له إجابة أفضل هنا: هناك بعض المكتبات هاسكل القياسية التعامل مع عملية الاتصال؟

وMVars استخدام أو القنوات. انظر الفصل 24 من RealWorld هاسكل:    http://book.realworldhaskell.org/read/concurrent-and- متعددة النوى-programming.html

إذا كنت ترغب في مفترق الواقع عملية، على غرار يونكس، تحتاج إلى استخدام forkProcess كما قدمها <لأ href = "http://hackage.haskell.org/package/unix-2.4.2.0/docs/System- POSIX-Process.html "يختلط =" نوفولو "> http://hackage.haskell.org/package/unix-2.4.2.0/docs/System-Posix-Process.html

في هذه الحالة، MVars وTVars لا تفعل اتصال interprocess، بحيث لا يمكن استخدامها للقيام IPC. جميع التقنيات القياسية لIPC (الأنابيب، ومآخذ، إلخ) لا تزال تعمل. إذا كنت تريد شيئا أكثر على مستوى عال، وتحقق من الغيمة هاسكل http://www.haskell.org/haskellwiki/ Cloud_Haskell

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top