首页 / LINUX / linux – 分叉与线程
linux – 分叉与线程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 分叉与线程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1823字,纯文字阅读大概需要3分钟。
内容图文
![linux – 分叉与线程](/upload/InfoBanner/zyjiaocheng/951/09442d9c2b7844bc8b4dcfaf45a19b54.jpg)
我之前在我的应用程序中使用过线程并且很好地了解它的概念,但是最近在我的操作系统讲座中我遇到了fork().这与线程类似.
我谷歌搜索他们之间的差异,我开始知道:
> Fork只是一个看起来与旧进程或父进程完全相同的新进程,但它仍然是一个具有不同进程ID并拥有自己内存的不同进程.
>螺纹是轻量级工艺,开销较小
但是,我脑子里还有一些问题.
>什么时候你应该更喜欢fork()而不是线程和反之?
>如果我想作为孩子调用外部应用程序,那么我应该使用fork()或线程来做吗?
>在进行谷歌搜索时,我发现有人说在线程中调用fork()是件坏事.为什么人们想在类似的东西中调用线程内的fork()?
> fork()是否无法利用多处理器系统,因为父进程和子进程不同时运行?
解决方法:
分叉和线程方法之间的主要区别在于操作系统架构.在Unix设计的时代,分叉是一个简单,简单的系统,可以最好地满足大型机和服务器类型的要求,因为它在Unix系统上得到了普及.当Microsoft从头开始重新构建NT内核时,它更多地关注线程模型.因此,今天仍然存在显着差异,因为Unix系统在分叉时效率很高,并且Windows在线程方面效率更高.你可以在Apache中看到这一点,它在Unix上使用prefork策略,在Windows上使用线程池.
特别针对您的问题:
When should you prefer fork() over threading and vice-verse?
在Unix系统上,您执行的任务远比仅实例化工作程序要复杂得多,或者您需要单独进程的隐式安全沙箱.
If I want to call an external application as a child, then should I use fork() or threads to do it?
如果孩子将使用相同的代码对父母执行相同的任务,请使用fork.对于较小的子任务,请使用线程.对于单独的外部进程,请不要使用,只需使用正确的API调用即可调用它们
While doing google search I found people saying it is bad thing to call a fork() inside a thread. why do people want to call a fork() inside a thread when they do similar things?
不完全确定,但我认为复制流程和大量子线程在计算上相当昂贵.
Is it True that fork() cannot take advantage of multiprocessor system because parent and child process don’t run simultaneously?
这是错误的,fork创建了一个新进程,然后利用OS任务调度程序中进程可用的所有功能.
内容总结
以上是互联网集市为您收集整理的linux – 分叉与线程全部内容,希望文章能够帮你解决linux – 分叉与线程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。