我在這裏閱讀衝突意見。我的意思是,雖然異步方法調用也可以通過用戶看不到的線程池來處理,但這可能會節省資源,因爲底層操作系統能夠在IO調用掛起時掛起這些線程嗎?使用異步方法調用通過.net線程提高性能
回答
你是完全正確的。 IO線程不僅被掛起,而且在不需要時它們會被退出。但異步IO並不是解決所有問題的通用解決方案,因此:
- 異步算法很難編碼。異步代碼比同步變量更復雜且容易出錯
- IO完成回調在特殊IO線程中工作,程序員必須儘可能保持這些線程儘可能的自由;否則系統會顯着減速。所以,如果你去異步IO準備實施生產者 - 消費者模式實際數據處理
- 如果你有少於150個並行連接的需求,並且應用程序在PC機上運行,那麼同步實現將是一個低懸掛水果提供易於編程和令人滿意的性能同時
+1爲異步的缺點。 – 2012-03-02 08:40:49
儘管如上所述,應該謹慎地進行異步編程。新的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他還說明了一些關於異步的好處。我知道這是未來,但基於這個問答,似乎它可能會有所幫助:) – 2012-03-02 17:12:46
理想情況下,如果可能的話,你會使用.net 4.0 System.Threading.Tasks.Parallel類。它將利用多核處理器。
而且很簡單。
'異步方法調用也被用戶看不到的線程池處理 - 是的,必須做I/O!
'這可能會節省資源,因爲底層操作系統能夠掛起這些線程,同時IO調用正在等待' - 操作系統能夠在I/O掛起時掛起用戶線程。
在高性能應用程序中,異步獲勝是因爲將更多工作推入內核,以便可以實現更好的線程管理。這確實減少了上下文切換,並且還避免了大量的數據複製。
- 1. 提高異步Web調用的性能
- 2. 通過了解調用異步方法在.NET
- 3. 關於python中使用D-Bus異步方法調用的線程安全性
- 4. 性能DB異步調用
- 5. 線程與異步調用
- 6. 異步方法調用同步方法
- 7. 如何從非異步方法異步調用異步方法
- 8. Nodejs服務器 - 通過使循環迭代異步來提高性能
- 9. 會異步Rest API與線程調用影響性能?
- 10. 使用JNI異步調用Java方法
- 11. 使用c#5.0調用異步方法
- 12. 調用WCF方法異步
- 13. 異步調用方法
- 14. 異步調用webservice方法
- 15. 異步方法調用PHP
- 16. C#異步方法調用
- 17. Python - 通過線程管理異步方法
- 18. PowerShell:.NET方法調用的性能
- 19. 是否使用異步編程範式提高性能的所有時間
- 20. 從ASP.NET調用異步方法調用
- 21. TPL異步靜態方法調用線程安全
- 22. 如何測試異步線程方法被調用?
- 23. 如何在java線程內調用異步方法?
- 24. 是否可以通過異步管道調用類方法
- 25. 異步調用和異步io調用之間的差異.net
- 26. 如何在不使用C#的異步方法中調用異步方法.Result
- 27. 線程調用非同步實例方法時的同步方法被調用
- 28. 同步異步調用的方法?
- 29. 異步調用同步webservice方法
- 30. 提高通用字典性能的方法
大量的線程需要不斷的上下文切換。 – diolemo 2012-03-02 04:27:08
請不要用「.net」等來標題。這就是標籤的用途。 – 2012-03-02 04:42:07
許多現成的線程需要不斷的上下文切換。 – 2012-03-02 08:34:50