私はここで矛盾する意見を読んでいます。非同期メソッド呼び出しもスレッドプールによって処理されますが、IO呼び出しが保留されている間に基本オペレーティングシステムがこれらのスレッドを中断できるため、リソースを節約する可能性があります。非同期メソッド呼び出しを使用すると、.netスレッドでのパフォーマンスが向上しますか
答えて
あなたは正しいです。 IOスレッドはサスペンドされるだけでなく、不要になったときにリタイアされます。しかし、非同期IOはすべての問題の一般的な解決策ではありません。理由は次のとおりです。
- 非同期アルゴリズムはコーディングが難しいです。非同期コードは、同期バリアントより複雑でエラーが発生しやすい
- IO完了コールバックは特別なIOスレッドで機能し、プログラマはこれらのスレッドを可能な限り自由に保つ必要があります。そうしないと、システムの速度が大幅に低下します。したがって、非同期IOに進むと、実際のデータ処理のためにプロデューサ/コンシューマパターンを実装する準備が整う
- 150個未満の並列接続で要求があり、アプリケーションがPCマシン上で実行される場合、同期実装は、プログラムの容易さと満足のいくパフォーマンスを同時に実現する果物
+1は非同期の短所です。 –
非同期プログラミングは、上記のように慎重に行う必要があります。新しい5.0の機能により、非同期は非常に簡単になり、コーディングでは表現力豊かになります。私は何が起こっているのか理解するためにEric Lippertの記事を読むことをお勧めします:http://blogs.msdn.com/b/ericlippert/archive/2010/10/29/asynchronous-programming-in-c-5-0-part-two -whence-await.aspx彼はまた、非同期のいくつかの良い点を述べています。私はこれが未来だと知っていますが、このQ&Aに基づいて、それは役に立つかもしれません:) –
可能であれば、.net 4.0 System.Threading.Tasks.Parallelクラスを使用することをお勧めします。マルチコアプロセッサを利用します。
それは簡単です。
'非同期メソッド呼び出しも、スレッドプールによって処理されます。ユーザには見えません。はい、I/Oを実行する必要があります。
'I/Oが保留されている間にOSがユーザースレッドを中断できる間に、基礎となるオペレーティングシステムがこれらのスレッドを中断できるため、リソースを節約する可能性があります。
高性能のアプリケーションでは、より良いスレッド管理が可能なより多くの作業がカーネルにプッシュされるため、非同期で勝ちます。これはコンテキストスイッチを減らし、多くのデータコピーを回避します。
- 1. メソッドを非同期に呼び出す、または独自のスレッドでパフォーマンスを向上させる
- 2. UIスレッドで同期メソッドを非同期で呼び出す
- 3. ThreadPool.QueueUserWorkItemスレッド内で非同期呼び出しを使用
- 4. 非同期メソッドのsysncメソッドを呼び出しますか?
- 5. 同期UIスレッドからのコールバックで非同期メソッドを呼び出す
- 6. 非同期メソッドと同期メソッドを連続して呼び出します
- 7. コールバックを使用した.NET非同期Webサービス呼び出し
- 8. 非同期メソッドを使用してXigniteを呼び出す
- 9. Javaスレッド内で非同期メソッドを呼び出す方法は?
- 10. 非同期メソッド呼び出しのテスト
- 11. 非同期メソッドで非同期呼び出しスタック
- 12. 非同期メソッドが呼び出された同期メソッドを待機します
- 13. 非同期コードから非同期メソッドを呼び出す
- 14. 非同期メソッドから同期メソッドを呼び出す
- 15. 非同期に非同期デリゲートを呼び出しますか?
- 16. 複数の非同期呼び出しをスレッドする
- 17. Invokeメソッドの呼び出しは非同期ですか?
- 18. UIスレッドの非同期呼び出しを同期呼び出しに変換する
- 19. 非同期メソッド(Web呼び出しを行う)を非同期にラップする
- 20. .NET ConcurrentDictionaryのGetOrAddメソッドが非同期メソッドを呼び出すことはできますか?
- 21. C#/ .NETのすべての非同期API呼び出しは、バックグラウンドで別のスレッドを消費しますか?
- 22. 非同期メソッドから非同期メソッドを呼び出す方法
- 23. Microsoft.Azure.NotificationHub - 同期メソッドの非同期呼び出し
- 24. ES6:非同期呼び出しでジェネレータを使用する
- 25. 非同期呼び出し
- 26. iPhoneアプリで非同期メソッド呼び出しを使用しているFTPファイル
- 27. パラメータを使用した非同期呼び出しの呼び出し方法
- 28. 別のメソッドから非同期メソッドを呼び出す方法
- 29. UIViewControllerと非同期の呼び出し
- 30. 非同期呼び出しでAddSingletonを呼び出しますか?
多くのスレッドでは、一定のコンテキスト切り替えが必要です。 – diolemo
タイトルに「.net」などのプレフィックスを付けないでください。それがタグのためのものです。 –
準備ができているスレッドがたくさんある場合は、コンテキストを一定に切り替える必要があります。 –