假设我们有 MethodA 和 MethodB,其中整个方法的主体位于单个大锁 block 内。两种方法都使用相同的对象进行锁定:
lock (objectX)
{
// methodbody
}
有多个线程调用这两个方法。
两个问题:
- 是否可以测量总等待时间?包括:获取锁的时间和“其他”方法的锁 block 执行完成所需的时间。
- 在两个方法中的适当位置引入锁而不是用单个锁封装整个方法体会更快吗?我意识到在这里我需要衡量两种解决方案的性能,但我想听听您的经验和建议
最佳答案
2) Would it be faster to introduce locks in both methods on appropriate places
是的。始终保持锁定段尽可能短。锁定本身很便宜,当你做非关键的事情时不要让别人等待。
1) Is it possible to measure total wait time? Including: time to obtain lock and time required by "other" method's lock block to finish execution.
我认为并非如此。对于长时间的延伸,您可能会查看 CPU 时间与运行时间,但一般来说:使用好的分析器。
关于c# - Lock() { ... } 等待时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9587263/