我wan't维持几个BlockingCollections是否列表<BlockingCollection <T>>线程安全吗?
List<BlockingCollection<ExtDocument>> a = new List<BlockingCollection<ExtDocument>>();
列表,并在子线程检查是否有任何“队列”中仍然有悬而未决的项目:
if (a.Where(x => x.IsAddingCompleted).Count > 0)
是一个List<T>
的使用在这种情况下,线程安全如果在初始化后(该集合中的阻塞列表的内容将改变过场......)列表中的项目数量没有变化?
或者我应该选择一个array of BlockingCollection
或以下建筑:
BlockingCollection<BlockingCollection<workitem>> a = new BlockingCollection<BlockingCollection<workitem>>();
如果列表在初始化后没有改变,那么使用列表就完全没问题。只有阅读不是并发的问题,它的可变性最终使它成为问题。 – Caramiriel 2014-09-26 11:05:17
我宁愿使用一个数组而不是'List'。这样更清楚的是项目的数量不会改变。 –
CodesInChaos
2014-09-26 11:08:29
@ Caramiriel感谢您的信息! CodesInChaos:感谢您的提示。当你有能力使用.NET框架4.5(T []'继承)时,这确实会增加未来程序员 – User999999 2014-09-26 11:11:34