Questions tagged «volatility»

4
引用分配是原子的,那么为什么需要Interlocked.Exchange(ref Object,Object)?
在我的多线程asmx Web服务中,我有一个自己类型为SystemData的类字段_allData,由几个组成List<T>并Dictionary<T>标记为volatile。系统数据(_allData)会不时刷新,我通过创建另一个称为的对象newData并用新数据填充其数据结构来做到这一点。完成后,我只分配 private static volatile SystemData _allData public static bool LoadAllSystemData() { SystemData newData = new SystemData(); /* fill newData with up-to-date data*/ ... _allData = newData. } 这应该起作用,因为分配是原子的,并且引用了旧数据的线程继续使用它,其余线程在分配后立即拥有了新的系统数据。但是我的同事说,volatile我不应该使用关键字和简单配置,InterLocked.Exchange因为他说在某些平台上不能保证引用分配是原子的。另外:当我宣布the _allData字段volatile的 Interlocked.Exchange<SystemData>(ref _allData, newData); 产生警告“对volatile字段的引用将不会被视为volatile”我应该怎么看?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.