ホームページ > バックエンド開発 > C++ > 非同期プログラミングとマルチスレッドの違いは何ですか?

非同期プログラミングとマルチスレッドの違いは何ですか?

Patricia Arquette
リリース: 2025-01-28 15:46:10
オリジナル
546 人が閲覧しました

What's the Difference Between Asynchronous Programming and Multithreading?

非同期プログラミングとマルチスレッド:互いに補完する2つの方法

多くの開発者は、最初に非同期プログラミングをマルチスレッドと同一視し、複数のプロセッサにタスクを割り当てる交換であると考えていました。ただし、注意深く勉強すると、2つの間にわずかではあるが重要な違いがあることがわかります。

非同期方法:非ブロッキングとコンテキストに関連する非同期メソッド設計は、非ブロッキング操作に使用されます。 「待ち望まれている」表現は、タスクの実行中に現在のスレッドを停止しません。代わりに、残りの方法を継続として登録し、非同期メソッドの呼び出し元にコントロールを返します。

興味深いことに、非同期方法は追加のスレッドを作成する必要はありません。非同期方法は、現在の同期コンテキストで実行され、アクティビティ中にスレッド時間のみを使用するため、複数のスレッドを必要としません。 「task.run」はCPU密度の高い作業をバックグラウンドスレッドにアンインストールできますが、結果を待つときは無効です。

Multi -Threaded:マルチスレッド作業

対照的に、マルチスレッドには複数のスレッド間でタスクを割り当てることが含まれ、各スレッドには独自の特別なプロセッサがあります。非同期処理タスク。一方、スレッドはこれらのタスクの作業スレッドに焦点を当てています。

アクティビティ:非同期朝食

朝食を作ることを想像してください:

同期:

最初に卵を炒め、次にパンを焼きます。 非同期シングルスレッド:

目玉焼きを開始し、タイマーを設定します。パンを焼き始めて、タイマーをセットします。調理中にキッチンをきれいにします。タイマーが鐘を鳴らした後、食べ物を取り除き、火から食べます。

非同期マルチスレッド:
    2人のシェフ、1枚目の卵、グリルを雇います。キッチンの競合を回避し、2人のシェフの給料を支払うための作業を調整します。
  • この類推は、マルチスレッドが非同期の形式であり、タスクが作業スレッド(スレッド)に割り当てられることを示しています。非同期シングルスレッドワークフローには、単一の作業スレッドによって管理される依存関係タスクが含まれます。
  • Jon Skeetの非同期例 Jon Skeetのコードは、非同期プログラミングを示しています:
  • このメソッドの実行は、フォローアップ操作を遅らせることなくバックグラウンドで実行できます。 Webサイトのコンテンツを取得し、完了するのを待ってから長さを表示します。 ワークフローの理解を強化するこの作業プロセスの鍵は、「待ち望んでいる」方法を理解することです。
    1. 新しいタスクを作成し、データをリクエストします。
    2. タスクを待つときにタスクが完了したかどうかを確認します。その場合は、結果を取得して実行し続けます。
    3. 完了していない場合、残りの方法は継続としてマークされ、コントロールは発信者に返されます。
    4. タスクが完了した後、現在のスレッドまたは別のスレッドで呼び出しが継続されます。
    5. 利用可能な結果を​​使用して、「待ち望まれている」ポイントで実行を復元します。

    本質的に、非同期プログラミングを使用すると、追加のスレッドをブロックしたり作成したりせずにタスクを同時に実行できます。パフォーマンスを最適化し、応答能力を維持するための強力なツールです。

以上が非同期プログラミングとマルチスレッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート