.NET:CLR是否自动为堆分配的对象引入基本线程安全(锁)?

时间:2010-02-14 20:58:11

标签: c# .net clr thread-safety

我的意思是一些基本的操作,比如类属性的读/写。 或者,它可能引入了一些更高级别的同步?

2 个答案:

答案 0 :(得分:4)

不,不保证线程安全。例如,您可以在引用类型实例(简单互斥功能)上使用lock关键字。 language specification定义了没有锁的哪些操作是原子的。

新的.NET 4现在包含了像ConcurrentBag这样的线程安全类,这样就可以轻松编写代码而无需自己关心锁。

答案 1 :(得分:2)

不,不。您必须自己同步对象的访问。在32位平台上单独读取/写入32位值是原子的,但这并不意味着对对象的更新是线程安全的。

由于同步会增加一些开销,因此为所有对象添加此内容可能会对整体性能造成重大损失。