私はJavaの世界が初めてです。いくつかの名前は、私にはとてもおもしろく聞こえます。
そのうちの 1 つが fork です。
いつもそうですか?
例: can という関数が表示された場合、その関数pid forkAndExec(String... commands)
は常に並列で実行されると想定します。
ありがとう
私はJavaの世界が初めてです。いくつかの名前は、私にはとてもおもしろく聞こえます。
そのうちの 1 つが fork です。
いつもそうですか?
例: can という関数が表示された場合、その関数pid forkAndExec(String... commands)
は常に並列で実行されると想定します。
ありがとう
プロセスを「フォーク」するとは、通常、現在のプロセスの新しいカーボンコピーを作成することを意味します。この用語は、新しい別の子プロセスを作成することを意味するために乱用されることがあります。ここまでは順調ですね。
ただし、「並列」の仮定は保証されません。実際には Java に依存するのではなく、それが実行されるプラットフォーム、つまりハードウェアと OS レイヤーの両方に依存します。
フォーク関数が実際に新しいプロセスを作成すると安全に想定できます (私はそう思います)。でも:
スケジューラは次のことができます。
また、プログラムは、あなたが話している並列化を妨げないように実装する必要があります (たとえば、親プロセスが子プロセスの実行を無期限に待機するように設定されている場合、それはそれらが同時に実行されることをほとんど意味しません...一方はもう一方が追いつくのを待っているだけです)。
また、forkAndExec について言及しています。これらも混同しやすいので注意が必要です。多くの言語の一部の関数は、新しいプロセスを fork して既存のプロセスを置き換えますが、他の関数は 2 つのプロセスを作成し、それらを並行して実行しようとします。
あなたはプログラミングの世界に不慣れなようです。そこにある多くのイディオムは、まったく別のものを意味するもののために英語から借用しています。これらは多くの場合、fork のように比喩ですが、通常、プログラミングの世界の意味をその外部の意味から推測することはできません。ウィキペディアで検索する場合は、曖昧さ回避に移動して、コンピューティング コンテキストの下を調べる必要があります。そこには、プロセスを作成する方法があります。