【问题标题】:Do processes after fork run simultaneously?fork 之后的进程是否同时运行?
【发布时间】:2021-05-11 05:16:39
【问题描述】:

好吧,我的问题是我在标题中写的内容,如果没有,有没有办法同时运行它们?我刚刚开始这个话题,这个话题突然出现在我的脑海中,我在任何地方都找不到它

【问题讨论】:

  • 基本上,在多核/多处理器计算机上:是的。但这取决于很多事情;一个简单的是/否答案(如我的)会跳过许多细节
  • 您可能想了解POSIX threads
  • '我在任何地方都找不到'.......真的吗?请通过发布您使用的搜索字符串的一小部分来帮助我们......(我猜你不能,因为你根本没有搜索)。
  • 如需答案,请尝试谷歌搜索“fork 后的进程是否同时运行?” :(
  • 然而这是一个 XY 问题。你问这个是因为你需要解决一些其他的问题。这是什么问题?

标签: c multithreading fork


【解决方案1】:

fork 之后,你有两个进程。就像在系统上启动两个应用程序一样。那么您系统上的两个应用程序是否同时运行?不管答案是什么,为什么你认为分叉后会有所不同?实际上,当您在系统上启动应用程序时,它是通过分叉启动的。一些应用程序启动器会分叉(shell、桌面 UI、文件管理器等),然后在分叉的进程中加载​​新程序,用启动的应用程序代码替换自己,这就是应用程序实际上是如何启动的。

非常简单的答案: 如果您的 CPU 有多个内核,则两个进程可以真正并行运行。如果不是,它是一个多任务系统,系统会通过在所有正在运行的进程之间快速切换来模拟并行执行,因此每个进程获得一点 CPU 时间,然后下一个进程获得一点 CPU 时间,依此类推。这会产生并行执行的印象。

为简单起见,此答案忽略了常见操作系统的线程或其他细节。

【讨论】:

  • '通过在所有正在运行的进程之间快速切换来模拟并行执行,因此每个进程获得一点 CPU 时间,然后下一个进程获得一点 CPU 时间等等' 误导 - 仅适用于进程处于就绪或运行状态的线程。
猜你喜欢
  • 2014-07-04
  • 1970-01-01
  • 2016-02-09
  • 2017-11-02
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2021-09-17
  • 2021-12-08
相关资源
最近更新 更多