我有用c#編寫的多線程應用程序。我注意到使用lock(this)方法實現線程同步會使應用程序減慢20%。這是一種預期的行爲,還是我應該仔細觀察實施?同步線程減慢多線程應用程序
0
A
回答
2
鎖定確實會增加一些開銷,這是無法避免的。現在你的一些線程很可能會等待資源被釋放,而不僅僅是當他們想要的時候抓住它們。如果你正確地實現了線程同步,那麼這是一件好事。
但是總的來說,如果沒有關於應用程序的深入瞭解,就無法回答您的問題。 20%的放緩可能是確定的,但你可能鎖定的太廣泛,然後程序會(一般來說)變慢。
此外,請不要使用鎖(此)。如果您的實例被傳遞並且其他人鎖定了引用,那麼您將會遇到死鎖。最佳做法是鎖定其他人無法訪問的私人對象。
0
取決於lock()語句的粗糙程度或粒度,您確實可以影響MT應用程序的性能。只鎖定你真正知道的東西應該被鎖定。
0
任何同步都會減慢多線程。
這就是說,lock(this)
真的不是一個好主意。在可能的情況下,您應該始終鎖定專用對象,只用於同步。
請務必將您的鎖定保持在最低限度,並且只在最短的時間內保持鎖定。這將有助於將「放緩」降到最低。
0
還有performance counters您可以在Windows中監視以查看您的應用程序花費多少時間爭用鎖。
相關問題
- 1. 多線程減慢程序的速度
- 2. 多線程,線程同步
- 3. 同步數據減慢應用程序
- 4. C#winforms應用程序線程同步
- 5. 多線程同步
- 6. 運行一個多線程程序同步非常慢Java
- 7. 多線程,線程間通信,同步
- 8. 多線程和線程同步
- 9. 多線程與線程佔先同步
- 10. Qt 4 GUI應用程序GUI線程使用QNetworkRequests減慢
- 11. 多線程應用程序
- 12. 如何在多線程應用程序中同步雙緩衝
- 13. 如何實現同步多線程中的Java應用程序
- 14. 在多線程應用程序中同步阻塞
- 15. 在多線程應用程序中記錄框架和同步
- 16. ArrayList,線程和同步 - 如何準確同步多個線程
- 17. Android IntentService減慢UI線程
- 18. C++線程應用程序比非線程運行速度慢
- 19. 線程同步
- 20. 線程同步
- 21. 線程同步
- 22. 線程同步
- 23. 線程/同步
- 24. 線程同步
- 25. 同步線程
- 26. 線程同步
- 27. 線程同步
- 28. C++多線程執行速度減慢
- 29. AFNetworking多個上傳減慢主線程
- 30. .NET多線程同步