也意味着单个线程上的故障或内存泄漏会影响所有这些线程。根据您的代码,您可能会有线程为内存总线,L可容纳而战,并且有很多上下文开关可以导致明显的放缓。
另一方面,Process具有一个新的,新鲜的私人记忆空间。这意味着它们需要更长的时间才能开始,但是它们更加孤立。 Linux允许您更多地控制进程,例如限制内存和CPU。这可以使他们更容易调试。
另一方面,他们的分解通信(IPC)较慢,需要共享内存,这可能是一项复杂的任务,因为它们倾向于共享最小的数据,它们倾向于导致较少的同步错误(Mutex,locks等)
通常不提及的东西是:
过程是您唯一的分布式,多节点部署的选项。
过程可以导致NUMA CPU中更多的控制和利用,这在服务器中更为常见。
一般而言,如果您必须并行化代码的一部分,例如函数,循环等,则使用线程。如果您需要平行问题空间,每个实体在不同的数据块上进行相同的工作,则倾向于使用流程。
这只是一个快速的规则,人们可能会不同意。