5

this questionからの利点の async/await-on-ASP.NET のバリエーションがあります。

私の理解では、非同期は並列処理と同じではありません。したがって、Web サーバーでは、async/await が ASP.NET ページにもたらすメリットがどれほどあるのか疑問に思います。

IIS+ASP.NET は、要求にスレッドを割り当てるのが得意ではありませんか? 1 つのページがリソースを待機中の場合、サーバーは処理すべき別の要求の処理に切り替わるだけでしょうか?

ASP.NET が使用するプール内のスレッドの数は限られています。async はそれらをより効果的に使用しますか?

上記の質問への回答で Skeet 氏が指摘したように、UI スレッドをブロックすることについて話しているのではありません。私たちはすでにマルチスレッド化されており、非同期であろうとなかろうと、要求のすべてのタスクが完了するまで Web 応答を完了できませんよね?

要約すると、次のようになると思います。

ASP.NET ページでのリソース (ファイルや DB 要求など) の非同期読み取りとブロックに対する利点はありますか?

4

1 に答える 1

8

1 つのページがリソースの待機中にビジー状態になった場合、サーバーは処理すべき別のリクエストの処理に切り替わるのでしょうか?

私はそうは思わない。もしそうなら、私は非常に驚くだろう。理論的には可能ですが、非常に複雑です。

ASP.NET が使用するプール内のスレッドの数は限られています。async はそれらをより効果的に使用しますか?

はい、await何かをすると、そのリクエストのスレッドがすぐにプールに返されるためです。

私たちはすでにマルチスレッド化されており、非同期であろうとなかろうと、要求のすべてのタスクが完了するまで Web 応答を完了できませんよね?

それは正しいです。asyncサーバー シナリオでは、スレッド プールへの負担を取り除くことがすべてです。

ASP.NET ページでのリソース (ファイルや DB 要求など) の非同期読み取りとブロックに対する利点はありますか?

絶対!

ファイル/サービス呼び出し/データベース リクエストでブロックすると、その操作の間、そのスレッドが使用されます。awaitファイル/サービス呼び出し/データベース要求の場合、そのスレッドはすぐにスレッド プールに返されます。

これの 1 つの (非常にクールな!) 結果は、進行中のリクエストを持つことができ、(a) 何らかの操作を待機している間、そのリクエストにサービスを提供するスレッドがないことです! 必要に応じて、ゼロスレッドの同時実行。

操作が完了すると、メソッドは - の後に再開さawaitれ、スレッド プールの (異なる可能性がある) スレッドで実行されます。

結論としてasync、スレッドよりもスケーリングが優れているため、サーバー側には間違いなく利点があります。

詳細:投稿する私自身のイントロasyncこの素晴らしいビデオ.

于 2012-08-02T14:40:33.073 に答える