在C#中,获取非易失性属性时是否需要锁定?我知道在设置属性时我们需要锁定。怎么样?
现在3.0提供自动属性,它本身是线程安全吗?
答案 0 :(得分:4)
是。如果多个线程正在读/写同一属性,则必须将其锁定。
自动属性只不过是语法糖而且不会锁定。
答案 1 :(得分:4)
不,automatic properties不是线程安全的。它们只不过是语法糖;编译器自动生成私有支持字段,就像你手动写出来一样。
但是,除非您的应用程序从多个线程访问属性,否则首先没有理由担心这一点。如果您的应用程序是多线程的,那么很难从您的问题中判断出来。
答案 2 :(得分:2)
没有。如果您从多个线程访问该属性,则仍需要锁定。
答案 3 :(得分:1)
我会说这取决于财产的类型。如果它可以原子方式读取(比如int或指针),那么读取是安全的。
但是,如果通过属性访问对象,则多个线程可以同时访问该对象。
但是getter / setter中的锁定也不会在这里帮助。
HTH
马里奥