並列性と同時性 このエントリは、マルチスレッド プログラムでよく使用されます。しかし、並列処理と同時実行とは正確には何を意味するのでしょうか?まあ、それらは同じですか、それとも何ですか?
最も簡単な答えは「いいえ」です。表面的には非常によく似ていますが、これらは同じ用語ではありません。また、それらの違いを発見して理解するのにも時間がかかりました。そこで、このチュートリアルにそれらに関する記事を追加することにしました。
同時実行性
同時実行性とは、アプリケーションが同時に複数のタスクを実行することを意味します。コンピューターに CPU が 1 つしかない場合、アプリケーションは実際には一度に複数のプログラムを実行することはできませんが、アプリケーション内で一度に複数のプログラムが実行される可能性があります。次のタスクを開始する前にタスクを完全に終了することはできません。
.
並列
並列とは、アプリケーションがタスクを小さなサブタスクに分割し、これらのサブタスクを複数の CPU で同時に実行するなど、並列で実行できることを意味します。
同時実行性と並列処理の詳細な比較
ご覧のとおり、同時実行性はアプリケーションが複数のタスクを処理する方法です。アプリケーションはタスクを順番に実行することも、複数のタスクを同時に実行することもできます。
並列処理とは、言い換えれば、アプリケーションが単一のタスクをどのように処理するかということです。アプリケーションはタスクを開始から終了まで連続的に実行することも、タスクを並行して実行できる複数のサブタスクに分割することもできます。
ご覧のとおり、アプリケーションは同時実行できますが、並列実行はできません。これは、同時に複数のタスクを実行しますが、このタスクをサブタスクに分割できないことを意味します。
アプリケーションは同時ではなく並列にすることもできます。これは、アプリケーションがタスクを同時に実行し、タスクが複数のサブタスクに分割されて並列実行されることを意味します。
また、アプリケーションは同時実行も並列もできません。これは、アプリケーションが一度に 1 つのタスクのみを処理し、タスクがサブタスクに分割されないことを意味します。
最後に、アプリケーションは同時実行と並列実行の両方が可能です。この場合、複数のタスクを同時に処理することも、各タスクを複数のサブタスクに分割して並列実行することもできます。ただし、コンピューターの CPU はすでに同時実行または並列処理でかなりビジー状態になっているため、このシナリオでは同時実行と並列処理の利点の一部が失われる可能性があります。この 2 つを組み合わせると、パフォーマンスがわずかに向上するか、場合によってはパフォーマンスが低下する可能性があります。並行性モデルを盲目的に採用する前に、分析と測定を確認する必要があります。
上記は Java 並行性と並列処理の詳細な紹介です。さらに関連する内容については、PHP 中国語 Web サイト (m.sbmmt.com) に注目してください。