私の知る限り-(そして私はそれについてたくさん読んだ)、ファイルの読み取りやファイルのダウンロードなどのI / O操作を処理するときの「スレッドがブロックされている」問題を解決するために、非同期メソッド(非同期デリゲートではありません!)が存在します:
リヒターはそれをここで非常に明確に示しています:
Task<T>
I/O ブロッキングの問題とは関係ありません。それは単にスレッドを開くのと同じです(さらに効率性と機能性が向上します)-ただし、それでもスレッドがCPUクォンタムなどを消費します.
そして、ここに私の質問があります:
私は(msdn)それを読んだ:
非同期メソッドは、呼び出し元のスレッドをブロックすることなく、長時間実行される可能性のある作業を行うための便利な方法を提供します。非同期メソッドの呼び出し元は、非同期メソッドの終了を待たずに作業を再開できます。
Task<t>
withを作成するのと同じContinueWith
ですか?用語がややこしくないですか?
asynchronous methods
操作用ですi/o
( i/o 操作が行われている間待機しているスレッドがなく、それを処理しているスレッドがありません) 。しかし 、(async を使用する) コードを as: と呼ぶのasynchronous methods
は少し混乱します。そう思わない?実行中の別のスレッドがあると想定しているためです...(これが実際に私の最初の質問です)。
混乱はどこから?
アルバハリは、非同期メソッドの目的を強調する傾向があるためです。
ps私はこのトピックに関してSOでいくつかの質問を読みましたが、io操作を処理するために非同期メソッドがここにあるという誤分類について話しているものは見つかりませんでした