【发布时间】:2012-03-30 20:22:34
【问题描述】:
我阅读的关于fork() 的教程、手册和其他资源通常只包含可以用线程更好地解决的示例。他们只是交流,做一些非常基本的任务,然后再次交流以分享或展示结果。我的感觉是,除非您打算启动一个外部程序(通过让父亲继续并让孩子启动该外部程序),否则线程总是比 fork 更容易处理、更灵活、更安全。
当fork() 优于仅使用线程时,还有其他应用领域吗?除了病毒。
【问题讨论】:
-
在一些/许多操作系统上,进程比线程便宜。
-
@ildjarn - 更便宜?既然一个进程必须至少有一个线程来为其提供执行,那怎么可能呢?
-
@vsz:任何虚拟内存管理器在后台以写时复制的方式共享数百兆内存。
-
fork()比各种线程机制早了至少十年。因此,如果您需要移植到 V7 UNIX,fork()是一个更好的选择。 -
一个典型的例子是网络服务器(例如,Apache)。如果一个进程崩溃了,很容易干净地重新启动——线程就不是这样了。使用单独的进程可以限制您因单个进程崩溃而受到的损害。
标签: c++ multithreading