同步基元

时间:2014-03-31 22:04:24

标签: c# multithreading synchronization postsharp

在这个PostSharp Multithreading示例中,它在清单6中说明:

  

任何修改对象的方法都应该用。注释   [WriteLock]自定义属性。读取多个字段的方法   该对象也应该使用[ReadLock]自定义进行注释   属性。 (同步方法或属性getter是没用的   执行单个读访问,因为操作始终是   是一致的。

同步方法或属性获取器执行单个读取访问是否无用是什么意思?这只适用于简单的原语,如string,int,float等,还是适用于结构?或者这是一个误导性的陈述?

1 个答案:

答案 0 :(得分:1)

很可能它谈到“对指针大小对象的操作是原子的” - 所以如果你单独读取引用或相应地调整大小struct,你就可以保证在没有锁的情况下具有一致的值。

一致意味着你不能从旧的属性值获得半指针,而从属性的新值获得一半。请注意,它并不意味着最新值 - 如果您需要最新值,您仍需要某种同步。

有关详细信息What operations are atomic in C#?