锁定(){..}等待时间

本文关键字:等待时间 锁定 | 更新日期: 2023-09-27 18:27:00

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

lock (objectX) 
{ 
    // methodbody
}

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

两个问题:

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

锁定(){..}等待时间

2) 在适当的地方在两种方法中引入锁会更快吗

是的。始终保持锁定段尽可能短。锁定本身很便宜,当你做非关键的事情时,不要让别人等着。

1) 是否可以测量总等待时间?包括:获取锁的时间和"其他"方法的锁块完成执行所需的时间。

我不这么认为。对于较长的时间段,您可能会查看CPU时间与运行时间,但总的来说:使用一个好的探查器。