using System;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;
namespace UnitTest
{
public class Program
{
static void Main(string[] args)
{
var blockingCollection = new BlockingCollection<string>();
var producer = Task.Factory.StartNew(() =>
{
for (int count = 0; count < 10; count++)
{
blockingCollection.Add("value" + count);
Thread.Sleep(300);
}
blockingCollection.CompleteAdding();
});
var consumer1 = Task.Factory.StartNew(() =>
{
foreach (string value in blockingCollection.GetConsumingEnumerable())
{
Console.WriteLine("Worker 1: " + value);
}
});
var consumer2 = Task.Factory.StartNew(() =>
{
foreach (string value in blockingCollection.GetConsumingEnumerable())
{
Console.WriteLine("Worker 2: " + value);
}
});
Task.WaitAll(producer, consumer1, consumer2);
Console.ReadKey();
}
}
}
线程安全集合
最新推荐文章于 2024-04-16 21:08:51 发布