C# 中的线程安全并发集合
.NET Framework 4 引入了 System.Collections.Concurrent 命名空间。它有若干个线程安全且可扩展的集合类。这些集合称为并发集合,因为可以由多个线程同时访问它们。
以下是在 C# 中的并发集合 −
序号 | 类型 & 说明 |
---|---|
1 | BlockingCollection<T> 对任何类型的限定和阻断功能。 |
2 | ConcurrentDictionary<TKey,TValue> 键值对字典的线程安全实现。 |
3 | ConcurrentQueue<T> FIFO(先进先出)队列的线程安全实现。 |
4 | ConcurrentStack<T> LIFO(后进先出)堆栈的线程安全实现。 |
5 | ConcurrentBag<T> 元素无序集合的线程安全实现。 |
6 | IProducerConsumerCollection<T> 类型必须实现的接口,以便在 BlockingCollection 中使用 |
让我们看看如何使用 ConcurrentStack<T>,它是一个线程安全的最后先进先出的 (LIFO) 集合。
创建一个 ConcurrentStack。
ConcurrentStack<int> s = new ConcurrentStack<int>();
添加元素
s.Push(1); s.Push(2); s.Push(3); s.Push(4); s.Push(5); s.Push(6);
来个示例
示例
using System; using System.Collections.Concurrent; class Demo{ static void Main (){ ConcurrentStack s = new ConcurrentStack(); s.Push(50); s.Push(100); s.Push(150); s.Push(200); s.Push(250); s.Push(300); if (s.IsEmpty){ Console.WriteLine("The stack is empty!"); } else { Console.WriteLine("The stack isn't empty"); } } }
广告