C#基础--线程安全集合

前言:

  随着多线程的使用变得越来越频繁,集合安全也成了开发者不得不面对的一个问题,好在.NetFramework 4.0 引入了命名空间:System.Colletion.Concurrent,其命名空间下的类型都是线程安全的。

一、ConcurrentQueue

• Add:向集合中插入元素
• TryTake:从集合中取出元素并删除
• TryPeek:从集合中取出元素,但不删除该元素。

二、ConcurrentStack

三、ConcurrentBag

四、ConcurrentDictionary

•AddOrUpdate:如果键不存在,方法会在容器中添加新的键和值,如果存在,则更新现有的键和值。
•GetOrAdd:如果键不存在,方法会向容器中添加新的键和值,如果存在则返回现有的值,并不添加新值。
•TryAdd:尝试在容器中添加新的键和值。
•TryGetValue:尝试根据指定的键获得值。
•TryRemove:尝试删除指定的键。
•TryUpdate:有条件的更新当前键所对应的值。
•GetEnumerator:返回一个能够遍历整个容器的枚举器。

五、BlockCollection

•Add :向容器中插入元素
•TryTake:从容器中取出元素并删除
•TryPeek:从容器中取出元素,但不删除。
•CompleteAdding:告诉容器,添加元素完成。此时如果还想继续添加会发生异常。
•IsCompleted:告诉消费线程,生产者线程还在继续运行中,任务还未完成。

以上集合都继承了IProducerConsumerCollection<T>, IEnumerable<T>, IEnumerable, ICollection这些接口,可在foreach中遍历

 

posted @ 2022-12-08 21:16  Darius丶段  阅读(840)  评论(0编辑  收藏  举报