繁体   English   中英

获取C#中的属性时是否需要加锁

[英]Do we need to lock when we get the property in C#

在C#中,获取非易失性属性时是否需要加锁? 我知道我们在设置属性时需要锁定。 怎么样?

现在 3.0 提供了自动属性,它本身是线程安全的吗?

是的。 如果多个线程正在读取/写入同一属性,则必须锁定它。

自动属性只不过是语法糖,不会锁定。

不,自动属性不是线程安全的。 它们只不过是语法糖; 编译器会自动生成私有支持字段,就像您手动编写它们一样。

但是,除非您的应用程序从多个线程访问属性,否则首先没有理由担心这一点。 如果您的应用程序是多线程的,您的问题很难判断。

否。如果您从多个线程访问该属性,您仍然需要锁定。

我会说这取决于财产的类型。 如果可以以原子方式读取它(如 int 或指针),则读取是安全的。

但是,如果您通过属性访问 object,则多个线程可以同时访问该 object。

但是在 getter/setter 中的锁也不会在这里有所帮助。

hth

马里奥

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM