.NET(C#):线程安全集合的阻塞BlockingCollection的使用(4)
来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:28 点击:次
//试图添加1-10
Task.Run(() =>
{
var forOpt = new ParallelOptions()
{
//防止在某些硬件上并发数太多
MaxDegreeOfParallelism = 2
};
Parallel.For(1, 11, forOpt, i =>
{
Console.WriteLine("等待加入:" + i);
bcollec.Add(i);
Console.WriteLine("成功加入:" + i);
Thread.Sleep(500);
});
});
Thread.Sleep(600);
//开始枚举
Task.Run(() =>
{
foreach (var i in bcollec.GetConsumingEnumerable())
Console.WriteLine("输出:" + i);
Console.WriteLine("完成枚举");
});
Thread.Sleep(300);
bcollec.CompleteAdding();
Console.WriteLine("=== 调用CompleteAdding");
Thread.Sleep(Timeout.Infinite);
可能的输出:
等待加入:1
等待加入:6
成功加入:1
成功加入:6
等待加入:2
成功加入:2
等待加入:7
成功加入:7
输出:1
输出:6
输出:2
输出:7
=== 调用CompleteAdding
完成枚举
等待加入:3
等待加入:8
可以看到,等CompleteAdding,“枚举完成”马上被输出!
:D
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>