我听说,在一个程序中混合使用分叉和线程可能是非常有问题的,神秘的行为与共享资源,如锁,管道,文件描述符打交道时往往造成,尤其是。 但我从来没有完全理解正是风险所在,当这些可能发生。 这将是巨大的,如果有人在这方面的人才能够在细节缺陷是什么,哪些需要被呵护在这样的环境下编程时解释一点。
例如,如果我想编写从各种不同的资源收集数据的服务器,一个解决方案,我已经想到是让服务器派生一组线程,每个popen方法调用了另一个程序做实际工作中,开放管道获取数据从孩子回来。 每一个为自己工作这些线程响应,在B / W他们没有数据的互换,并在收集数据时,主线程有一个队列,这些工作线程将只是把结果在队列中。 什么能去错了这个解决方案?
请不要只是“回答”我的示例场景缩小你的答案。 不相关的例子,但有助于提供一个干净的设计有什么建议,替代解决方案,或经验将是巨大的! 谢谢!