我有用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多线程同步