0

ネットワークとデータベースへの呼び出しをラップしてそれらを待機するWebアプリケーションがある場合Task<T>、これによりスレッドがブロックされないようになり、再利用できるようになります。

ただし、IO作業を実行するときに、ブロックされているスレッドがまだあるので、待つことに実質的なメリットはありませんか?

4

1 に答える 1

2

ブロッキング呼び出しをでラップしているだけの場合はTask.Run、正しいです。利点はありません。

ただし、自然に非同期のメソッド(たとえば、非同期//HttpClientメソッドWebClientおよびHttpWebRequest非同期データベースメソッド)を使用している場合、それらの要求によってスレッドは使用されず、スケーラビリティの利点が得られます。

Windowsのデバイスドライバーレベルでは、すべてのI/Oは非同期です。同期APIは単なる便利なラッパーです。当然、非同期メソッドは同期APIを介してスレッドをブロックしません。それらは非同期APIに基づいて構築されています。

于 2013-01-31T13:15:42.523 に答える