我可以在非静态方法中使用 lock
对象吗?另一方面,这段代码是线程安全的吗?
static readonly object _object = new object();
public void Get()
{
lock (_object)
{
...
}
}
最佳答案
在非静态方法中锁定静态对象是可以的。静态对象只是意味着该类型的所有实例都有一个单个锁。
如果您使用类级字段,您的类型的每个实例都有一个锁。
您选择哪一个取决于您要防止并发访问的资源。例如,如果您有一个静态资源(比如一个集合),那么保护该资源的锁也必须是静态的。
关于c# - 锁定非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676266/