本章讲述:C# BlockingCollection 并行容器的简单用法、
1、BlockingCollection :与经典的阻塞队列数据结构类似,能够适用于多个任务添加和删除数据,提供阻塞和限界能力
2、并行集合的名字空间:
3、BlockingCollection:一个支持界限和阻塞的容器(线程安全集合),常用函数如下
Add :向容器中插入元素
TryTake:从容器中取出元素并删除
TryPeek:从容器中取出元素,但不删除。
CompleteAdding:告诉容器,添加元素完成。此时如果还想继续添加会发生异常。
IsCompleted:告诉消费线程,生产者线程还在继续运行中,任务还未完成。
4、简单代码例程:一个任务往容器里面添加数据,另一个任务把数据从容器中取出,进行处理;
<string> m_BlockData = new <string>();
//添加数据:
private void AddToList()
{
string tempStr = "aaa";
m_BlockData.Add(tempStr);
}
//取出数据
private void RaiseDataEvent()
{
while (true)
{
if (m_BlockData != null)
{
var temp = m_BlockData.Take();
}
if (!m_Receiver.IsOpen)
{
m_BlockData.Dispose();
m_BlockData = null;
break;
}
}
}