在C#中访问bool场原子吗?特别是,我是否需要在周围放置锁:

class Foo
{
   private bool _bar;

   //... in some function on any thread (or many threads)
   _bar = true;

   //... same for a read
   if (_bar) { ... }
}

推荐答案

Yes.

以下数据类型的读写是原子的:bool、char、byte、sbyte、short、ushort、uint、int、float和引用类型.

就像在C# Language Spec年发现的那样.

编辑:理解volatile关键字可能也是值得的.

.net相关问答推荐

从容器化客户端应用程序连接到 OPC-UA 服务器

AppShell - 返回导航失败,匹配的路由不明确......但我只注册了一次路由

如何在选项卡中 Select Winforms NumericUpDown 中的所有文本?

无法加载文件或程序集 不支持操作. (来自 HRESULT 的异常:0x80131515)

如何调试 .NET 运行时中的内部错误?

AsyncLocal 的语义与逻辑调用上下文有何不同?

我应该创建一个 DateRange 对象吗?

标签从右向左增长

异步总是 WaitingForActivation

为什么需要 XmlNamespaceManager?

如何使用c#从excel文件中读取数据

如何将 UI Dispatcher 传递给 ViewModel

在 C# 中转义命令行参数

将 C# 编译为本机?

从 .NET 中的字符串末尾修剪字符串 - 为什么会丢失?

是否可以在 XP 上运行 .NET 4.5 应用程序?

如何从文件中删除单个属性(例如只读)?

在 .NET 中,null 的哈希码是否应该始终为零

我可以将构造函数参数传递给 Unity 的 Resolve() 方法吗?

在类型 c# 上切换大小写