【发布时间】:2012-03-23 07:20:18
【问题描述】:
我正在学习 fork() 的基础知识。我被要求工作的程序之一有一些要运行 1000 次的功能。然后再说一遍,大概是因为它更快。
我的问题是为什么在分叉的进程中运行简单的函数(创建数组、链表和执行系统调用)会更快,因为分叉不是简单地制作原始程序的完整副本吗?
【问题讨论】:
我正在学习 fork() 的基础知识。我被要求工作的程序之一有一些要运行 1000 次的功能。然后再说一遍,大概是因为它更快。
我的问题是为什么在分叉的进程中运行简单的函数(创建数组、链表和执行系统调用)会更快,因为分叉不是简单地制作原始程序的完整副本吗?
【问题讨论】:
通常没有理由让父母分叉一个孩子来做那种工作,但是如果父母分叉 多个 孩子,那么这项工作可以分布在多个处理器上,或者多个工作单元至少可以被调度以充分利用一个处理器是分叉的孩子永远需要等待 I/O 或长时间运行的系统调用。
如今,线程更常用于此类事情,因为线程使用的资源比新进程少 - 但它仍然是一个很好的学习练习。
【讨论】: