C#4.0:是否有现成的,线程安全的自动实现的属性?

我想对自动实现的属性进行线程安全的读写访问.我从C#/ .NET框架中缺少这个功能,即使是最新版本.
最好的,我会期待像

[Threadsafe]
public int? MyProperty { get; set; }

我知道有各种各样的代码示例来实现这一点,但是我只是想确保这是不可能使用.NET框架方法,在自己实现之前.我错了吗?

编辑:正如有些答案详细阐述了原子性,我想说明,只要我明白这一点:只要(而不是一个)一个线程正在读取该属性的值,则不会有其他线程被允许更改值.因此,多线程不会引入无效值.我选择了int?因为这是我目前关心的.

编辑2:I have found the specific answer to the example with Nullable here, by Eric Lippert

最佳答案
正确;没有这样的设备.大概你试图保护不要读字段,而另一个线程已经改变了一半(原子性)?请注意,许多(小)原语本身就不具有这种线程问题的安全性:

5.5 Atomicity of variable references

Reads and writes of the following data
types are atomic: bool, char, byte,
sbyte, short, ushort, uint, int,
float, and reference types. In
addition, reads and writes of enum
types with an underlying type in the
previous list are also atomic.

但是,诚实地说,这只是穿线冰棍的一小部分;它本身通常是不够的只有一个线程安全属性;大多数情况下,同步块的范围必须不止于一个读/写.

还有许多不同的方式使线程安全,取决于访问配置文件;

>锁定?
> ReaderWriterLockSlim?
>参考交换到某个类(本质上是Box< T>,因此在这种情况下是Box< int>)
>联锁(所有的伪装)
>挥发性(在某些情况下,它不是魔杖…)
>等

(更不用说它是不可变的(通过代码,或者只是选择不使它变异,这通常是使线程安全的最简单的方法)

转载注明原文:C#4.0:是否有现成的,线程安全的自动实现的属性? - 代码日志