私はここで矛盾する意見を読んでいます。非同期メソッド呼び出しもスレッドプールによって処理されますが、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. UIスレッドで同期メソッドを非同期で呼び出す
- 2. ThreadPool.QueueUserWorkItemスレッド内で非同期呼び出しを使用
- 3. 非同期メソッドを使用してXigniteを呼び出す
- 4. 非同期メソッド呼び出しのテスト
- 5. 複数の非同期呼び出しをスレッドする
- 6. UIスレッドの非同期呼び出しを同期呼び出しに変換する
- 7. 非同期呼び出し
- 8. ES6:非同期呼び出しでジェネレータを使用する
- 9. 非同期メソッドから非同期メソッドを呼び出す方法
- 10. iPhoneアプリで非同期メソッド呼び出しを使用しているFTPファイル
- 11. UIViewControllerと非同期の呼び出し
- 12. Pythonでの同期呼び出しへの非同期呼び出し
- 13. WCF非同期呼び出しが遅い、同期呼び出し高速
- 14. 非同期に同期メソッドを呼び出す
- 15. 非同期ライブラリから非同期呼び出しを行う?
- 16. Javascriptオブジェクトと非同期呼び出し
- 17. 非同期呼び出しは常に新しいスレッドを作成/呼び出しますか?
- 18. JNIを使用してJavaメソッドを非同期に呼び出す
- 19. Javaから非同期で.NET Webサービスを呼び出す
- 20. クライアント側から.NET Remoting非同期サービス呼び出しを終了します。
- 21. Silverlight非同期呼び出しと匿名メソッド
- 22. C#非同期呼び出しメソッド定期的に
- 23. C#Webservice:非同期メソッドを呼び出すWebmethodがTaskoffオブジェクトを返します
- 24. 非同期呼び出しを同期化する方法
- 25. 別スレッドの非同期NSURLConnectionがデリゲートメソッドの呼び出しに失敗する
- 26. C#EndInvokeを使用しない非同期呼び出し?
- 27. Silverlight:スレッド/遅延アクション/非同期呼び出し/イベント
- 28. デリゲートを使用して非同期にメソッドを呼び出すのがベストプラクティスですか?
- 29. C#非同期呼び出しのタイムアウト
- 30. 非同期呼び出し後のコールタスクメソッド
多くのスレッドでは、一定のコンテキスト切り替えが必要です。 – diolemo
タイトルに「.net」などのプレフィックスを付けないでください。それがタグのためのものです。 –
準備ができているスレッドがたくさんある場合は、コンテキストを一定に切り替える必要があります。 –