您的位置:首页 > 产品设计 > UI/UE

C# 同步/并发队列ConcurrentQueue (表示线程安全的先进先出 (FIFO) 集合)

2014-03-18 11:35 477 查看
http://msdn.microsoft.com/zh-cn/library/dd267265(v=vs.110).aspx

static void Main(string[] args)
{
// Construct a ConcurrentQueue.
ConcurrentQueue<int> cq = new ConcurrentQueue<int>();

// Populate the queue.
for (int i = 0; i < 10000; i++) cq.Enqueue(i);

// Peek at the first element.
int result;
if (!cq.TryPeek(out result))
{
Console.WriteLine("CQ: TryPeek failed when it should have succeeded");
}
else if (result != 0)
{
Console.WriteLine("CQ: Expected TryPeek result of 0, got {0}", result);
}

int outerSum = 0;
// An action to consume the ConcurrentQueue.
Action action = () =>
{
int localSum = 0;
int localValue;
while (cq.TryDequeue(out localValue)) localSum += localValue;
Interlocked.Add(ref outerSum, localSum);
};

// Start 4 concurrent consuming actions.
Parallel.Invoke(action, action, action, action);

Console.WriteLine("outerSum = {0}, should be 49995000", outerSum);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: