【发布时间】:2011-08-16 22:39:23
【问题描述】:
在 C# 中,获取非易失性属性时是否需要锁定?我知道我们在设置属性时需要锁定。怎么样?
现在 3.0 提供了自动属性,它本身是线程安全的吗?
【问题讨论】:
标签: c# .net properties thread-safety automatic-properties
在 C# 中,获取非易失性属性时是否需要锁定?我知道我们在设置属性时需要锁定。怎么样?
现在 3.0 提供了自动属性,它本身是线程安全的吗?
【问题讨论】:
标签: c# .net properties thread-safety automatic-properties
不,automatic properties 不是线程安全的。它们只不过是语法糖;编译器会自动生成私有支持字段,就像您手动编写它们一样。
但是,除非您的应用程序从多个线程访问属性,否则首先没有理由担心这一点。从您的问题中很难判断您的应用是否是多线程的。
【讨论】:
是的。如果多个线程正在读取/写入同一个属性,则必须锁定它。
自动属性只不过是语法糖,不会锁定。
【讨论】:
没有。如果您从多个线程访问该属性,您仍然需要锁定。
【讨论】:
我会说这取决于房产的类型。如果它可以被原子读取(如 int 或指针),则读取是安全的。
但是,如果您通过属性访问一个对象,那么多个线程可以同时访问该对象。
但是在 getter/setter 中的锁也无济于事。
第
马里奥
【讨论】: