分叉与线程

分叉与线程,第1张

分叉与线程

分叉和线程化方法之间的主要区别是 *** 作系统体系结构之一。在Unix设计之初,fork是一个简单,简单的系统,可以最好地满足大型机和服务器类型的要求,因此在Unix系统上得到了广泛的应用。当Microsoft从头开始重新架构NT内核时,它更多地关注线程模型。因此,今天与Unix系统在分叉方面的效率和Windows在线程方面的效率更高之间仍然存在显着差异。您可以在Apache中最明显地看到这一点,Apache在Unix上使用prefork策略,在Windows上使用线程池。

具体针对您的问题:

什么时候应该更喜欢fork()而不是线程?

在Unix系统上,您要执行的工作要比实例化工作程序复杂得多,或者您需要单独的进程的隐式安全沙箱。

如果我想以子代身份调用外部应用程序,那么应该使用fork()还是线程来执行此 *** 作?

如果孩子用相同的代码执行与父对象相同的任务,请使用fork。对于较小的子任务,请使用线程。对于单独的外部进程,都不使用它们,只需使用适当的API调用即可调用它们。

在进行Google搜索时,我发现有人说在线程内调用fork()是一件坏事。人们为什么在做类似的事情时想在线程内调用fork()?

不能完全确定,但是我认为复制一个进程和许多子线程在计算上相当昂贵。

因为父级和子级进程无法同时运行,fork()不能利用多处理器系统是真的吗?

这是错误的,fork创建了一个新进程,然后利用OS任务调度程序中进程可用的所有功能。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4943889.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存