C#线程安全类型

477 阅读1分钟

前言

在多线程中对同一变量进行写操作的时候,会导致最终结果与预期不一致,使用安全类型保证原子性。

int

不安全的示例

image.png

安全的示例

image.png

集合

不安全的示例

image.png

安全的示例

image.png

集合相关安全类型

BlockingCollection 为实现 IProducerConsumerCollection 的线程安全集合提供阻塞和限制功能。

ConcurrentBag 表示对象的线程安全的无序集合。

ConcurrentDictionary<TKey, TValue> 表示可由多个线程同时访问的键值对的线程安全集合。

ConcurrentQueue 表示线程安全的先进先出 (FIFO) 集合。

ConcurrentStack 表示线程安全的后进先出 (LIFO) 集合。

OrderablePartitioner 表示将一个可排序数据源拆分成多个分区的特定方式。

Partitioner 提供针对数组、列表和可枚举项的常见分区策略。

Partitioner 表示将一个数据源拆分成多个分区的特定方式。

IProducerConsumerCollection 定义供制造者/使用者用来操作线程安全集合的方法。此接口提供一个统一的表示(为生产者/消费者集合),从而更高级别抽象如System.Collections.Concurrent.BlockingCollection 可以使用集合作为基础的存储机制。