在C#里面我们常用各种集合,数组,List,Dictionary,Stack等,然而这些集合都是非线程安全的,当多线程同时读写这些集合的时候,有可能造成里面的数据混乱,为此微软从Net4.0开始专门提供了另一套线程安全的版本(放在System.Collections.Concurrent命名空间).

都有这些:

当有多个线程并发访问集合时,应使用这些类代替 System.Collections 和 System.Collections.Generic 命名空间中的对应类型。

  说明
BlockingCollection<T> 为实现 IProducerConsumerCollection<T> 的线程安全集合提供阻塞和限制功能。
ConcurrentBag<T> 表示对象的线程安全的无序集合。
ConcurrentDictionary<TKey, TValue> 表示可由多个线程同时访问的键值对的线程安全集合。
ConcurrentQueue<T> 表示线程安全的先进先出 (FIFO) 集合。
ConcurrentStack<T> 表示线程安全的后进先出 (LIFO) 集合。
OrderablePartitioner<TSource> 表示将一个可排序数据源拆分成多个分区的特定方式。
Partitioner 提供针对数组、列表和可枚举项的常见分区策略。
Partitioner<TSource> 表示将一个数据源拆分成多个分区的特定方式。
  接口 说明
IProducerConsumerCollection<T> 定义供制造者/使用者用来操作线程安全集合的方法。此接口提供一个统一的表示(为生产者/消费者集合),从而更高级别抽象如System.Collections.Concurrent.BlockingCollection<T> 可以使用集合作为基础的存储机制。

转载于:https://www.cnblogs.com/DragonStart/p/7526663.html

C# 各种常用集合类型的线程安全版本相关推荐

  1. Scala 系列(六)—— 常用集合类型之 List Set

    一.List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表. scal ...

  2. C# 数组增加元素_C#的集合类型及使用技巧

    在日常开发过程中,我们不能避免的要对批量数据处理,这时候就要用到集合.集合总体上分为线性集合和非线性集合.线性集合是指元素具有唯一的前驱和后驱的数据结构类型:非线性集合是指有多个前驱和后驱的数据结构类 ...

  3. 【Scala 教程】Scala 集合类型

    作者:梦家 个人站点:dreamhomes.top 公众号:DreamHub Scala Collection Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变 ...

  4. spring中的依赖注入——构造函数注入、set方法注入( 更常用的方式)、复杂类型的注入/集合类型的注入

    spring中的依赖注入 依赖注入: Dependency Injection IOC的作用:降低程序间的耦合(依赖关系) 依赖关系的管理:以后都交给spring来维护.在当前类需要用到其他类的对象, ...

  5. Redis常用命令入门5:有序集合类型

    有序集合类型 上节我们一起学习了集合类型,感受到了redis的强大.现在我们接着学Redis的最后一个类型--有序集合类型. 有序集合类型,大家从名字上应该就可以知道,实际上就是在集合类型上加了个有序 ...

  6. Redis常用命令入门4:集合类型

    集合类型 之前我们已经介绍过了最基本的字符串类型.散列类型.列表类型,下面我们一起学习一下集合类型. 集合类型也是体现redis一个比较高价值的一个类型了.因为Redis的集合类型,所以我们可以很容易 ...

  7. C#常用集合的使用(转载)

    大多数集合都在System.Collections,System.Collections.Generic两个命名空间.其中System.Collections.Generic专门用于泛型集合.针对特定 ...

  8. C#集合类型总结和性能分析

    C#集合类型概述 集合是.NET FCL(Framework Class Library)中很重要的一部分.所有的集合类都继承自IEnumerable.集合类总体可分为一下几类:关联/非关联型集合,顺 ...

  9. 数据结构与常用集合总结

    数据结构与常用集合总结 数据结构(英语:data structure)是计算机中存储.组织数据的方式. 数据结构是一种具有一定逻辑关系,在计算机中应用某种存储结构,并且封装了相应操作的数据元素集合. ...

  10. 第十三章_Java中常用集合大整理(含底层数据结构简单介绍)

    第十三章_Java中常用集合大整理 1.集合和数组的区别 集合 既可以存储基本数据类型还可以存储引用数据类型 定长–>是数组最大的特点,也是最大的缺点 数组 只能存储引用数据类型 长度可变 相同 ...

最新文章

  1. FPGA/ASIC初学者应该学习Verilog还是VHDL?
  2. Cocos2d-x游戏中默认的AndroidManifest.xml的解析
  3. mybatis中传入String类型参数的问题
  4. 支持Windows 7的CAD—AutoCAD Civil 3D 2010
  5. android分辨率对应关系,android各dpi与分辨率的对应关系
  6. java页面可配置化_web.xml页面配置
  7. 一个小例子体会Java反射的动态性
  8. Spring详解(四)------注解配置IOC、DI
  9. .net 发送电子邮件
  10. mssql数据库基本语句总结(2)
  11. LigerUI权限系统之角色管理
  12. floyd算法MATLAB实现
  13. 二十款免费WiFi渗透工具
  14. 视频无损裁剪、转换、合并、加水印、加特效?一切搞定!
  15. 《近匠》专访启明星辰安全研究中心副总监侯浩俊——物联网安全攻防的“线上幽灵”...
  16. UWB测距原理详细解答
  17. 被遗忘的设计模式——空对象模式(Null Object Pattern)
  18. 《策略驱动型数据中心——ACI技术详解》一1.3 数据中心设计
  19. java摩尔常量,摩尔气体常量 摩尔气体常数如何理解?
  20. 南大通用数据库-Gbase-8a-学习-26-UDF自定义函数(C、python外部函数)

热门文章

  1. VXLAN配置实例(三)——VXLAN集中式双活网关
  2. C++ 练习题(一:布尔表达式与真值表图文详解)
  3. [Erlang 0041] 详解io:format
  4. wdcp 开启某个Mysql数据库远程访问
  5. HashMap简单源码及多线程下的死循环
  6. mysql备份之lvm
  7. 如何动态读取嵌入式资源
  8. 杭电1.3.6考试排名
  9. 无聊时分析了下目前国内和国外汽车消费市场的区域性分布
  10. C++实现一个不能被继承的类