首页 > 编程语言 >C#基础--线程安全集合

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

时间:2022-12-08 21:37:13浏览次数:40  
标签:容器 删除 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中遍历

 

标签:容器,删除,C#,元素,--,添加,线程,集合
From: https://www.cnblogs.com/Darius0821/p/16967378.html

相关文章

  • easylogging++的那些事(四)源码分析(十三)LogFormat类
    目录构造函数赋值运算符==运算符解析FORMAT配置项在上一篇文章中我们介绍完了Logger和RegisteredLoggers相关接口,今天我们来看看LogFormat类。LogFormat类用于管......
  • 爬虫从入门到入狱(六)
    今日内容概要加代理,cookie,header,selenium去重规则源码分析scrapy-redis实现分布式爬虫今日内容详细加代理,cookie,header,selenium加代理#在爬虫中间件中defg......
  • Linux日志审计
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/291常用命令find、grep、egrep、awk、sedLinux中常见日志以及位置/v......
  • USACO 6.5 Betsy's Tour dp做法
    前段时间的训练题上课时感觉有dp做法就搓了搓试试原题是说有一个n*n的矩阵让你从左上角走到左下角也就是求一个哈密顿路(但我不会求哈密顿路) 尝试在左上角和右下角......
  • 聊一聊三级等保
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/292一、前言1.1基本认知网络安全:根据《信息安全技术网络安全等级保护......
  • linux编译安装时常见错误解决办法
     linux编译安装时常见错误解决办法configure:error:xslt-confignotfound.Pleasereinstallthelibxslt>=1.1.0distribution复制代码代码如下:yum-yinstallli......
  • Imminent Collision Mitigation with Reinforcement Learning and Vision
    郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布!201821stInternationalConferenceonIntelligentTransportationSystems(ITSC)Maui,Hawaii,USA,November......
  • 二. TS语法细节
    1.联合类型functionprintId(id:string|number){console.log(id);}printId(123)printId("abc")export{}通常需要使用类型缩小(做一些判断后再使用)functio......
  • Laravel Orm操作小结
    本文为joshua317原创文章,转载请注明:转载自joshua317博客 https://www.joshua317.com/article/293Model::find('id');//查找主键为id的所有数据Model::find([$key1,$ke......
  • Vim学习新发现-1
    Vim诞生于只有键盘而没有指点设备的年代,那时候的键盘也没有如今这样丰富的功能键(想象一下只有Shift和Ctrl的键盘!)。Vim是基于Mode的。通过不同Mode间的切换,Vim可以仅用按键......