マルチスレッド同期\非同期ブロッキング\ノンブロッキング

まず、同期および非同期

    定義:同期および非同期通信機構当該メッセージ(同期通信/非同期通信)。

  • 同期はあなたが呼び出すものです、呼び出し側は将来の実行を継続するために結果を返すために、コールを待つ必要があります。
  • 非同期、同期、及び逆に、発信者を理解しないであろう得られた結果が、後続の操作を継続するために利用可能であり、発信した後に呼が、発呼者は、成形体を介して、発信者に通知する、またはによって機能オフコールバックを処理します

    例えば:あなたが何かを買うためにショッピングモールに行く、あなたは携帯電話は、彼は、これは同期と呼ばれて離れることができない商品は、お店で待たなければならない倉庫に行ったことを携帯電話に空想を取って、格納します。今、あなたはサインOKを行くことに(笑、王をプレイ追跡劇、)注文が完了すると、あなたが他の回を行うために使用することができ、Jingdongは注文に直接携帯電話のファッションを購入し、他の商品。これは、非同期と呼ばれています。

  • 同期メソッドの呼び出し後は、呼び出し側は、その後の行動まで継続するメソッドの戻りを呼び出す必要があります。
  • 非同期メソッド呼び出しメッセージのように、開始後は、メソッド呼び出しの戻りすぐに、呼び出し側はその後の操作を続けることができます。そして、別のスレッドでは、通常は非同期方式、の「本物」の実装。全体のプロセスは、呼び出し側の作業を妨げません

同期実行
ここに画像を挿入説明
非同期実行
ここに画像を挿入説明
    これら二つの絵を通じて、あなたが明確にそれらの間の違いを見ることができます。

第二に、ブロックと非ブロック

  • 呼をブロッキング呼び出しが戻る前に結果を参照し、現在のスレッドは中断されます。唯一の呼び出し元のスレッドが結果後まで戻りません。
  • 非ブロッキング・コールがすぐに結果を得ることはありませいう前に、コールは、現在のスレッドをブロックしません。同期呼び出しのために、何回も現在のスレッドがまだアクティブな状態ですが、現在の関数のロジックから、それを返さない、何もしない、すなわち同期待ち、無駄にリソースを占有します。

第三に、二つのカテゴリーの違い

    ブロッキングとノンブロッキング・プログラムの状態がの呼び出し(メッセージ、戻り値)の結果を待っている間にすることを強調しました。

    そのメッセージ(同期通信/非同期通信)を強調するために、同期および非同期通信機構。

公開された25元の記事 ウォン称賛7 ビュー2131

おすすめ

転載: blog.csdn.net/qq_41506111/article/details/102837948