有几次我遇到过这个代码,其中一个类中的局部变量(它不是一个静态变量)已被用在锁中。
public class SomeClass
{
private object obj = new object();
....
....
lock(obj)
{
}
}
是否有任何锁定点,因为它是一个实例变量?
答案 0 :(得分:14)
是否有任何锁定点,因为它是一个实例变量?
多个线程可能在同一个实例上运行,并且线程安全需要锁定。例如,考虑共享队列。
答案 1 :(得分:5)
静态锁对于控制对静态变量的访问非常有用。实例锁对于控制对实例变量的访问非常有用。
使用本地锁对象来保护局部变量(除非它是匿名函数或迭代器中捕获的外部变量)没有任何意义,因为其他线程无法访问锁或变量。