非同期とマルチスレッド - 違いはありますか? 質問する

非同期とマルチスレッド - 違いはありますか? 質問する

非同期呼び出しでは常に新しいスレッドが作成されますか? 両者の違いは何ですか?

非同期呼び出しでは常に新しいスレッドが作成または使用されますか?

ウィキペディアによれば:

コンピュータ プログラミングでは、非同期イベントはメイン プログラム フローとは独立して発生するイベントです。非同期アクションは、非ブロッキング方式で実行されるアクションであり、メイン プログラム フローが処理を続行できるようにします。

非同期呼び出しは単一のスレッドで実行できることは知っていますか? これはどのように可能でしょうか?

ベストアンサー1

非同期で実行する必要のある操作が CPU の作業を必要としない場合は、別のスレッドを生成せずにその操作を実行できます。たとえば、非同期操作が I/O の場合、CPU は I/O が完了するまで待つ必要はありません。操作を開始するだけで、I/O ハードウェア (ディスク コントローラー、ネットワーク インターフェイスなど) が I/O 作業を実行している間に他の作業に移ることができます。ハードウェアは CPU に割り込むことで完了を CPU に知らせ、OS はイベントをアプリケーションに配信します。

多くの場合、高レベルの抽象化と API は、OS と基盤となるハードウェアから利用できる基盤となる非同期 API を公開しません。そのような場合、生成されたスレッドが I/O 操作を待機しているだけの場合でも、非同期操作を実行するスレッドを作成する方が通常は簡単です。

非同期操作で CPU が作業する必要がある場合、通常、その操作は別のスレッドで実行されなければ、完全に非同期にはなりません。その場合でも、複数の実行ユニットがある場合にのみ、実際に非同期になります。

おすすめ記事