日期:2014-05-17  浏览次数:21164 次

关于BlockingCollection 求指导
MSDN连接http://msdn.microsoft.com/zh-cn/library/vstudio/dd267312.aspx
第一句话:为实现 IProducerConsumerCollection<T> 的线程安全集合提供阻塞和限制功能。 
这是啥意思啊 这个类继承这个接口吗? 可是看实现没继承这个接口啊

属性IsCompleted:获取一个值,该值指示此 BlockingCollection<T> 是否已标记为已完成添加并且为空。
这句话是什么意思,已添加完成并且为空? 那到底是添加完成了还是为空啊?

对象BlockingCollection 是线程安全的 ,是什么意思?是指该对象 被标记了[ThreadStatic]吗?
不然怎么线程安全呢?

------解决方案--------------------
"BlockingCollection是线程安全",就是说多个线程可以同时对它进行读写操作。
“添加完成并且为空”,就是说1、已经为空,而且,2、已经被标记为完成(任何线程都不能再进行添加了)。
------解决方案--------------------
看备注啊,一遍不行,就多读几遍
IProducerConsumerCollection<T> 表示一种允许线程安全的数据添加和删除的集合。BlockingCollection<T> 用作 IProducerConsumerCollection<T> 实例的包装,允许阻止来自集合的删除尝试,直到数据可以被删除。同样,可以创建 BlockingCollection<T>,以强制限制 IProducerConsumerCollection<T> 中允许的数据元素数目上限;这样,在有空间存储所添加的项目之前,可以阻止向集合进行添加的尝试。在这方面,BlockingCollection<T> 类似于传统阻止队列数据结构,只是基础数据存储机制作为一个 IProducerConsumerCollection<T> 抽象出来。