非同期とマルチスレッド、簡単に言えば、マルチスレッドは非同期を実現する方法の 1 つです。

序文

非同期とマルチスレッドは、プログラマーがよく遭遇する問題です. 簡単に言えば、それらの違いと関連性は、マルチスレッドが非同期を実現する方法の 1 つであることです. 非同期を実装するには多くの方法があります. 非同期はプログラムをブロックしないためのものです. 実行中のマルチスレッド高い同時実行性のためです。

非同期:

非同期モデルでは、複数のイベントを同時に発生 (処理) させることができます。プログラムが長い時間のかかる関数 (メソッド) を呼び出した場合、プログラムの実行フローをブロックすることはなく、プログラムは実行を続けます。関数が実行されると、プログラムは実行完了メッセージを取得したり、実行結果にアクセスしたりできます (戻り値がある場合、または戻り値が必要な場合)。
非同期プログラミングでは、通常、時間のかかる関数に対して関数が提供され、関数のパラメーターにはコールバック用の追加パラメーターが含まれます。そして、この関数はコールバック関数と呼ばれることがよくあります。時間のかかる関数が完了すると、コールバック関数を介して結果が返されます。

マルチスレッド:

マルチスレッドとは、複数の命令 (スレッド) の同時実行または並列実行を指します。

シングルコア プロセッサでは、マルチスレッドによって、プログラムが並行して実行されているように見えることがよくあります。実際、プロセッサは、スケジューリング アルゴリズムを通じて複数のスレッドを切り替えてスケジュールします。または、外部入力 (割り込み) とスレッドの優先度の組み合わせに従ってスレッドを切り替えます。

マルチコア プロセッサでは、スレッドは真に並列で実行されます。複数のプロセッサが複数のスレッドを同時に実行して、より効率的な処理を実現します。

簡単な例としては、2 つのブラウザー ウィンドウを開き、同時に 2 つのファイルをダウンロードします。各ウィンドウは新しいスレッドを使用してファイルをダウンロードします。ウィンドウ間の完了を待つ必要はなく、並行してダウンロードします。

非同期とマルチスレッドの違い

上記の紹介から、マルチスレッドとは関数の同時実行がすべてであることがわかります。非同期プログラミングは関数間のノンブロッキング実行に関するものですが、非同期性をシングルスレッドまたはマルチスレッドに適用できます。

したがって、マルチスレッドは非同期プログラミングの実装の 1 つにすぎません。

マルチスレッドとは、プログラミングの論理層の概念であり、プロセス内で同時に実行されるコードであり、スレッド間の切り替え実行を実現できます。

非同期と同期は相対的です. 非同期は互いに独立しており、イベントを待っている間も自分のことを続けます, そして作業する前にイベントが完了するのを待つ必要はありません.

マルチスレッドは、非同期を実現する 1 つの方法です。非同期性とは、メソッドを呼び出すメイン スレッドが別のスレッドの完了を同期的に待機する必要がないことを意味します。そのため、メイン スレッドは他のことを行うことができます。

本質的に、非同期とマルチスレッドは同等の関係ではなく、非同期は最終的な目標であり、マルチスレッドは非同期を実現するための手段にすぎません。

要約する

マルチスレッドと非同期は同等ではなく、マルチスレッドは非同期を実現する方法の 1 つです。

おすすめ

転載: blog.csdn.net/qq_41841073/article/details/127785233