c# - 锁定非静态方法

标签 c#

我可以在非静态方法中使用 lock 对象吗?另一方面,这段代码是线程安全的吗?

static readonly object _object = new object();  
public void Get()  
{  
  lock (_object)  
  {  
    ...  
  }  
}

最佳答案

在非静态方法中锁定静态对象是可以的。静态对象只是意味着该类型的所有实例都有一个单个锁。

如果您使用类级字段,您的类型的每个实例都有一个锁。

您选择哪一个取决于您要防止并发访问的资源。例如,如果您有一个静态资源(比如一个集合),那么保护该资源的锁也必须是静态的。

关于c# - 锁定非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55676266/

相关文章:

不使用 netsh 注册 URI 的 C# HttpListener

c# - 触发器在 Sql Server 的 BulkCopy 中不起作用

c# - 如何使用 get set 从继承的属性中删除 set 访问器

java - Selenium webdriver 通过匹配来自其他列的文本来获取同一行中相邻列的文本

c# - 这个 C# 复制对象例程如何转换为 F#?

c# - 如何从 C# 字符串中删除一些字符?

c# - 录制编码播放并保存一个 wav 文件

c# - 仅在页面回发时插入 javascript

c# - 是否可以将数据上下文的属性绑定(bind)到另一个数据上下文的属性

javascript - 引用 View 文件夹中的 JavaScript 文件 - MVC 5