2014-03-31 35 views
1

在它清单6中指出这个PostSharp Multithreading例如:同步原语

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

是什么意思,它是没用的,同步执行单一的方法或属性的getter阅读权限?这仅适用于简单的基元,比如string,int,float等,还是它也适用于结构体?或者这是一个误导性陈述?

+0

这是有点误导 - 据我了解,假设读书是安全的,单读是好的。如果你有对象,其中一些值取决于他的其他值,当读取多于一个属性时 - 需要添加上述属性。但是,这是我..... – Mzf

+0

据我所知,他们说他们的对象不是ThreadSafe,因此你必须使用Reader和Writer锁来自己完成同步。 – Maxim

回答

1

最有可能谈“上的指示器大小的物体操作都是原子” - 所以,如果你做的参考单读或相应大小struct你保证有没有锁一致的值。

一致意味着您无法从属性的旧值获取半指针,并且无法从属性的新值获取一半指针。请注意,这并不意味着最新值 - 如果您需要最新值,您仍然需要某种类型的同步。

更多详细信息What operations are atomic in C#?