C# 各种常用集合类型的线程安全版本
在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> 可以使用集合作为基础的存储机制。 |
C# 各种常用集合类型的线程安全版本的更多相关文章
- java 常用集合类型--以及其特性
1:集合: (1) Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增 ...
- Scala 学习之路(六)—— 常用集合类型之 List & Set
一.List字面量 List是Scala中非常重要的一个数据结构,其与Array(数组)非常类似,但是List是不可变的,和Java中的List一样,其底层实现是链表. scala> val l ...
- Scala 系列(六)—— 常用集合类型之 List & Set
一.List字面量 List 是 Scala 中非常重要的一个数据结构,其与 Array(数组) 非常类似,但是 List 是不可变的,和 Java 中的 List 一样,其底层实现是链表. scal ...
- Java中的常用集合类型总结
1.可重复列表(List) LinkedList和ArrayList的区别:http://www.importnew.com/6629.html ArrayList vs. LinkedList vs ...
- Scala 学习之路(七)—— 常用集合类型之 Map & Tuple
一.映射(Map) 1.1 构造Map // 初始化一个空map val scores01 = new HashMap[String, Int] // 从指定的值初始化Map(方式一) val sco ...
- Scala 系列(七)—— 常用集合类型之 Map & Tuple
一.映射(Map) 1.1 构造Map // 初始化一个空 map val scores01 = new HashMap[String, Int] // 从指定的值初始化 Map(方式一) val s ...
- C#的集合类型及使用技巧
在日常开发过程中,我们不能避免的要对批量数据处理,这时候就要用到集合.集合总体上分为线性集合和非线性集合.线性集合是指元素具有唯一的前驱和后驱的数据结构类型:非线性集合是指有多个前驱和后驱的数据结构类 ...
- Scala集合类型详解
Scala集合 Scala提供了一套很好的集合实现,提供了一些集合类型的抽象. Scala 集合分为可变的和不可变的集合. 可变集合可以在适当的地方被更新或扩展.这意味着你可以修改,添加,移除一个集合 ...
- 转:C#常用的集合类型(ArrayList类、Stack类、Queue类、Hashtable类、Sort)
C#常用的集合类型(ArrayList类.Stack类.Queue类.Hashtable类.Sort) .ArrayList类 ArrayList类主要用于对一个数组中的元素进行各种处理.在Array ...
随机推荐
- spring boot 登录注册 demo (三) -- 前后端传递
前端页面通过thymeleaf渲染 <dependency> <groupId>org.springframework.boot</groupId> <art ...
- BotVS趋势交易策略-RSI
BotVS趋势交易策略-RSI, 基于Python实现. RSI简单买卖测试, 默认 70-100卖出,0-30买入 参数 代码 import math def adjustFloat(v): ret ...
- go web 第二天 学习笔记
package main import ( "crypto/md5" "fmt" "html/template" "io" ...
- SpringMVC基础-@RequestMapping
@RequestMapping @RequestMapping是一个用来处理请求地址映射的注解 可用于类或方法上. 类定义处:提供初步的请求映射信息.相当于当前 WEB 应用的根目录 方法处: ...
- Coursera无法正常提交作业
如下图,upload服务貌似被墙了,想要提交作业的话需要临时科学上网.
- Linux巩固记录(3) hadoop 2.7.4 环境搭建
由于要近期使用hadoop等进行相关任务执行,操作linux时候就多了 以前只在linux上配置J2EE项目执行环境,无非配置下jdk,部署tomcat,再通过docker或者jenkins自动部署上 ...
- B/S 架构中,网络模型的分解与协议解析
前言 如果是C/S专业毕业的或者是学过计算机网络课程的童鞋们,相信大家都知道网络模型的划分,本文首先来聊一聊目前对于B/S结构中,网络模型分解的两种方式. 没错,相信大家看到这个图片的时候就已经明白了 ...
- iOS,点击button拨打电话
//按钮点击拨打电话 -(void)kfclick:(UIButton *)btn { [[UIApplication sharedApplication] openURL:[NSURL URLWit ...
- 函数作用域中的this问题
首先一起回顾下预解析和作用域吧: 预解析: 浏览器每读到一个script标签或function,先不执行任何代码,会先把整个代码快速的浏览一遍,然后从中 挑出 var 和 function两个关键字 ...
- jsp页面附件上传暂存的处理
有没有遇到页面是新建一个新对象,对象里面需要上传附件,但是只有当对象保存时才将附件一同上传到数据库的情况? 这种情况的处理可以参考狐狸的思路: @jsp页面创建一个botton bn,该button的 ...