ブログ記事非同期版読み取り用メソッドを定義する に対して頂いたご指摘に対するメモ。
- awaitせずにTaskをじかに返せる場合はasyncにせずにそのまま返した方が良い
- メソッドを asyncにするだけでコストがかかる?
- Task.Runでラップしただけのような偽Asyncメソッドは基本避ける
- 非同期処理メソッドを実装する際は、I/O依存の処理と、CPU依存の処理は分けて考えなければならない
- ライブラリはI/O依存の処理のみを非同期メソッドとして提供すべきであり、CPU依存処理の非同期メソッドは提供すべきでない。
- CPU依存の処理を非同期で行うか否かを決めるのはライブラリを使う側の権限
- スレッド、スレッドプールはアプリケーション開発者側が管理すべきリソースなので、ライブラリ内部でTask.Run()等を使って(勝手に)消費したりしてはいけない。