我有许多对象的列表,许多对象可以通过多个线程访问它。为确保线程安全,我已将列表及其对象设置为只读。我唯一担心的是List<>
对象的迭代器,因为我记得阅读了关于迭代器线程安全问题的一些内容。我有问题吗?访问只读对象列表<>的线程安全
为了澄清:在BarObservable类中,List < Bar >
栏为只读。列表中的单个条也是只读的。 MarketDataAdaptor类使用BarService向BarsObservable类添加新条。该图不显示此内容,但IBarObservers通过对List < Bar >
的引用。他们不能写入,但他们确实使用List的迭代器。与此同时,最终的酒吧更新,并且一旦最终完成,新的酒吧将被添加到列表的末尾。
该列表在最初填充后是否会发生变化? – Ani 2010-12-17 02:07:05
是的。它的名单不断由内部班级更新。 – bkarj 2010-12-17 02:07:52
然后答案是否定的。如果你在.NET 4上,我建议你看看System.Collections.Concurrent命名空间。 http://msdn.microsoft.com/en-us/library/system.collections.concurrent.aspx – Ani 2010-12-17 02:09:25