我是Java世界的新手。有些名字对我来说听起来很有趣。
其中之一是叉子……我想叉子代表食物是平行的。
总是这样吗?
例如:如果我看到一个名为pid forkAndExec(String... commands)
can 我假设它总是并行运行的函数。
谢谢
我是Java世界的新手。有些名字对我来说听起来很有趣。
其中之一是叉子……我想叉子代表食物是平行的。
总是这样吗?
例如:如果我看到一个名为pid forkAndExec(String... commands)
can 我假设它总是并行运行的函数。
谢谢
“分叉”一个流程通常意味着您将创建当前流程的新副本。有时,该术语被滥用来表示创建一个新的不同子进程。到目前为止,一切都很好。
但是,不能保证“平行”假设。它实际上不依赖于 Java,而是依赖于它运行的平台,即硬件和操作系统层。
您可以放心地假设(我会)分叉函数确实会创建一个新进程。然而:
调度程序可以:
此外,您的程序需要以不妨碍您所说的并行化的方式实现(例如,如果父进程设置为无限期等待子进程执行,这几乎不意味着它们同时运行......一个只是在等待另一个赶上)。
另外,您提到了 forkAndExec。小心,因为它们也很容易混淆。许多语言中的一些函数会派生一个新进程并用它替换现有的进程,而另一些函数会创建两个进程并尝试并行运行它们。