c# - Lock() { ... } 等待时间

标签 c# .net multithreading

假设我们有 MethodA 和 MethodB,其中整个方法的主体位于单个大锁 block 内。两种方法都使用相同的对象进行锁定:

lock (objectX) 
{ 
    // methodbody
}

有多个线程调用这两个方法。

两个问题:

  1. 是否可以测量总等待时间?包括:获取锁的时间和“其他”方法的锁 block 执行完成所需的时间。
  2. 在两个方法中的适当位置引入锁而不是用单个锁封装整个方法体会更快吗?我意识到在这里我需要衡量两种解决方案的性能,但我想听听您的经验和建议

最佳答案

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/

相关文章:

c# - Linq 合并 2 个列表选择列

c# - Azure Functions - 带文件的路由模板

c# - 可序列化对象与不可序列化对象

c# - 为什么这个 LINQ 查询非常慢?

.net - 在 ASP.Net MVC v1 下,是否调用了 Page_Load?

c# - 关注 ListView 最后添加的项目

c# - 我的问题是关于向对象添加更多字符串条目

具有工作线程的 Python 套接字

java - eclipse 。当第二个电源读取前一个电源的静态字段时,运行两个不同的电源

java - 处理程序更改 UI 导致 CalledFromWrongThreadException