我是java世界的新手。有些名字听起来很有趣。
其中一个是叉子...我想叉子的食物意味着平行。
总是这样吗?
例如:如果我看到一个名为pid forkAndExec(String... commands)
的函数,我可以假设它将始终并行运行。
谢谢
答案 0 :(得分:4)
“分叉”流程通常意味着您将创建当前流程的新碳复制品。有一段时间,该术语被滥用意味着创建一个新的不同子进程。到目前为止一切都很好。
但是,并不保证“并行”假设。它实际上并不依赖于Java,而是依赖于它运行的平台,意味着硬件和操作系统层。
你可以安全地假设(我会),分叉功能确实会创建一个新的过程。但是:
调度程序可以:
此外,您的程序需要以不妨碍您所说的并行化的方式实现(例如,如果父进程设置为无限期地等待子进程执行,这几乎不意味着它们并发运行......一个人只是在等待另一个赶上来。)
另外,你提到了forkAndExec。要小心,因为很容易混淆这些。许多语言中的某些函数将分叉一个新进程并用它替换现有进程,而其他函数将创建两个进程并尝试并行运行它们。
答案 1 :(得分:1)
您似乎对编程世界不熟悉。那里的许多成语都是从英语中借用那些完全不同于其他东西的东西。虽然这些通常都是隐喻,但与fork一样,通常不可能从编程世界的含义中推断出编程世界中的含义。如果您在Wikipedia上查找,则必须转到disambiguation并查看计算上下文。在那里你会找到method of creating processes。