[解決済み] 非同期呼び出しとノンブロッキング呼び出し? ブロッキングと同期呼び出しの間にも
2022-03-23 19:40:44
質問
非同期呼び出しとノンブロッキング呼び出しの違いは何ですか?また、ブロッキングと同期呼び出しの違いも教えてください(例を挙げてください)。
どのように解決するのですか?
多くの状況において、これらは同じものを表す異なる名前ですが、ある文脈では全く異なるものです。 つまり、場合によるのです。用語はソフトウェア業界全体で完全に一貫した方法で適用されているわけではありません。
例えば、古典的なソケットAPIでは、ノンブロッキングソケットは特別な "would block" エラーメッセージとともにすぐに戻るものですが、ブロッキングソケットはブロックされます。のような別の関数を使用する必要があります。
select
または
poll
をクリックすると、再試行のタイミングがわかります。
しかし、(Windowsソケットでサポートされている)非同期ソケットや、.NETで使用されている非同期IOパターンは、より便利です。メソッドを呼び出して処理を開始し、処理が完了するとフレームワークからコールバックされます。この点でも、基本的な違いがあります。非同期Win32ソケットは、Windowメッセージを渡すことによって、その結果を特定のGUIスレッドにマーシャルします。一方、.NET非同期IOはフリースレッドです(コールバックがどのスレッドで呼ばれるかは分かりません)。
そこで 同じ意味とは限りません。 . ソケットの例を抽出すると、次のようになります。
- ブロッキングとシンクロナス は同じことを意味します。 何らかの回答があるまでスレッドをハングアップさせる そして、それをあなたに返します。
- ノンブロッキング というのは、答えを迅速に返せない場合、APIの 即座に返す をエラーとし、それ以上何もしない。そこで API を呼び出す準備ができているかどうかを問い合わせるための、関連する方法があるはずです。 (つまり、効率的な方法で待機をシミュレートし、タイトなループでの手動ポーリングを避けるため)。
- 非同期 とは、API は常に即座に返されます。 を開始しました。 背景の努力 そのため、結果を得るための何らかの関連した方法があるはずです。
関連
-
[解決済み] 非同期実行と同期実行、その主な違いは?[クローズド]
-
[解決済み] どうすればjQueryに非同期ではなく、同期のAjaxリクエストを実行させることができますか?
-
[解決済み] 関数内で変数を変更した後、変数が変更されないのはなぜですか?- 非同期コードリファレンス
-
[解決済み] 非同期呼び出しとノンブロッキング呼び出し? ブロッキングと同期呼び出しの間にも
-
[解決済み】非同期プログラミングとマルチスレッドの違いは何ですか?
-
[解決済み】Kotlinのコルーチンにおけるlaunch/joinとasync/awaitの違いとは?
-
[解決済み】並行処理、並列処理、非同期メソッドの違いは何ですか?
-
[解決済み】同期プログラミングと非同期プログラミングの違いとは(node.jsの場合)
-
[解決済み] Node.jsのノンブロッキング、非同期I/Oとは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン