驻马店 网站制作,佛山设计网站公司,网站设计存在的不足,wordpress页面添加标签在.NET中#xff0c;有许多种线程安全的集合类#xff0c;下面介绍五种我们常用的线程安全集合以及他们的基本用法。
ConcurrentBag
ConcurrentBag 是一个线程安全的无序包。它适用于在多线程环境中频繁添加和移除元素的情况。
ConcurrentBagint concurrentBag n…在.NET中有许多种线程安全的集合类下面介绍五种我们常用的线程安全集合以及他们的基本用法。
ConcurrentBag
ConcurrentBag 是一个线程安全的无序包。它适用于在多线程环境中频繁添加和移除元素的情况。
ConcurrentBagint concurrentBag new ConcurrentBagint();// 添加元素
concurrentBag.Add(1);// 尝试添加元素
concurrentBag.TryAdd(2);// 移除元素
int item;
concurrentBag.TryTake(out item);
ConcurrentQueue
ConcurrentQueue 是一个线程安全的无序队列。它适用于在多线程环境中频繁添加元素和移除元素通常是先进先出方式的情况。
ConcurrentQueueint concurrentQueue new ConcurrentQueueint();// 添加元素
concurrentQueue.Enqueue(1);// 尝试添加元素
bool isSuccess concurrentQueue.TryEnqueue(2);// 移除元素
int item;
bool isRemoved concurrentQueue.TryDequeue(out item);
ConcurrentStack
ConcurrentStack 是一个线程安全的堆栈。它适用于在多线程环境中频繁添加元素和移除元素通常是后进先出方式的情况。
ConcurrentStackint concurrentStack new ConcurrentStackint();// 添加元素
concurrentStack.Push(1);// 尝试添加元素
bool isSuccess concurrentStack.TryPush(2);// 移除元素
int item;
bool isRemoved concurrentStack.TryPop(out item);
ConcurrentDictionaryTKey, TValue
ConcurrentDictionaryTKey, TValue 是一个线程安全的字典。它适用于在多线程环境中频繁添加、移除和查找键值对的情况。
ConcurrentDictionaryint, string concurrentDictionary new ConcurrentDictionaryint, string();// 添加或更新键值对
concurrentDictionary.AddOrUpdate(1, One, (key, oldValue) NewOne);// 尝试添加或更新键值对
bool isSuccess concurrentDictionary.TryAdd(2, Two);
bool isUpdated concurrentDictionary.TryUpdate(2, NewTwo, Two);// 移除键值对
string removedValue;
bool isRemoved concurrentDictionary.TryRemove(1, out removedValue);// 获取值
string value;
bool isFound concurrentDictionary.TryGetValue(1, out value);
BlockingCollection
BlockingCollection 是线程安全的集合提供了可阻塞的添加和移除方法
BlockingCollectionint blockingCollection new BlockingCollectionint();// 添加元素如果集合已满则阻塞当前线程
blockingCollection.Add(1);// 移除元素如果集合为空则阻塞当前线程
int item blockingCollection.Take();