[英]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.