1. ホーム
  2. multithreading

[解決済み】並行処理、並列処理、非同期メソッドの違いは何ですか?

2022-04-16 08:41:27

質問

並行処理とは、2つのタスクが別々のスレッドで並行して実行されることです。しかし、非同期メソッドは同じ1つのスレッド上で並行して実行されます。これはどのように実現するのですか?また、並列性についてはどうでしょうか?

この3つのコンセプトの違いは何でしょうか?

どのように解決するのか?

並列タスクは真のマルチタスクであり、同時に実行されるべきですが、並列タスクは、タスクが実行スレッドを共有しながら並列に実行されているように見えることを意味すると私は言っています。

非同期メソッドは、前の2つの概念とは直接関係ありません。非同期は、同時または並列タスクの印象を与えるために使用されますが、事実上、非同期メソッド呼び出しは、現在のアプリケーションから離れて作業を行う必要があるプロセスに通常使用され、応答を待ってアプリケーションをブロックすることは望んでいないのです。

例えば、データベースからデータを取得するのに時間がかかるかもしれませんが、データを待つためにUIをブロックするようなことはしたくありません。非同期呼び出しは、コールバック参照を取り、リクエストがリモートシステムに置かれるとすぐに、あなたのコードに実行を返します。リモートシステムが必要な処理を行う間、UIはユーザーへの応答を続けることができます。いったんリモートシステムがコールバックメソッドにデータを返すと、そのメソッドは適宜UIを更新(または更新をハンドオフ)できます。

ユーザーから見ると、マルチタスクのように見えますが、そうではないかもしれません。


EDIT

多くの実装では、非同期メソッド呼び出しによってスレッドが起動しますが、それは必須ではなく、実行される操作と、レスポンスをどのようにシステムに通知するかによります。