zoukankan      html  css  js  c++  java
  • C# 多线程安全集合类

    System.Collections.Concurrent 命名空间下提供多个线程安全集合类,只要多个线程同时访问集合,就应使用这些类来代替 System.Collections 和 System.Collections.Generic 命名空间中的相应类型。 但是,不保证通过扩展方法或通过显式接口实现访问集合对象是线程安全的,可能需要由调用方进行同步。

    一、相关的类

    类名 说明
    BlockingCollection 为实现 IProducerConsumerCollection 的线程安全集合提供阻塞和限制功能。
    ConcurrentBag 表示对象的线程安全的无序集合。
    ConcurrentDictionary<TKey,TValue> 表示可由多个线程同时访问的键/值对的线程安全集合。
    ConcurrentQueue 表示线程安全的先进先出 (FIFO) 集合。
    ConcurrentStack 表示线程安全的后进先出 (LIFO) 集合。
    OrderablePartitioner 表示将可排序数据源拆分为多个分区的特定方式。
    Partitioner 提供针对数组、列表和可枚举项的常见分区策略。
    Partitioner 表示将数据源拆分为多个分区的特定方式。

    二、介绍2个常用的类csharp ConcurrentDictionary csharp ConcurrentQueue

    1、ConcurrentDictionary

    2、ConcurrentQueue

    属性

    属性名 说明
    Count 获取 ConcurrentQueue 中包含的元素数。
    IsEmpty 获取一个值,该值指示 ConcurrentQueue 是否为空。
    方法
    方法名 说明
    ------ ------
    Clear() 从 ConcurrentQueue 中移除所有对象。
    CopyTo(T[], Int32) 从指定数组索引开始将 ConcurrentQueue 元素复制到现有一维 Array 中。
    Enqueue(T) 将对象添加到 ConcurrentQueue 的结尾处。
    Equals(Object) 确定指定对象是否等于当前对象。 (继承自 Object)
    GetEnumerator() 返回循环访问 ConcurrentQueue 的枚举数。
    GetHashCode() 作为默认哈希函数。 (继承自 Object)
    GetType() 获取当前实例的 Type。 (继承自 Object)
    MemberwiseClone() 创建当前 Object 的浅表副本。 (继承自 Object)
    ToArray() 将 ConcurrentQueue 中存储的元素复制到新数组中。
    ToString() 返回表示当前对象的字符串。 (继承自 Object)
    TryDequeue(T) 尝试移除并返回并发队列开头处的对象。
    TryPeek(T) 尝试返回 ConcurrentQueue 开头处的对象但不将其移除。
    简单应用

    更新中
    参考文档:
    1.微软官方文档

  • 相关阅读:
    git的搭建与简单实用
    zabbix项目实践
    zabbix的搭建与入门
    zabbix的深入了解
    harbor私有镜像仓库的搭建与使用与主从复制
    tensorflow 在windows下的安装
    word2vec:基本的安装及使用简介
    cs231n(三) 误差反向传播
    cs231n笔记(二) 最优化方法
    cs231n笔记 (一) 线性分类器
  • 原文地址:https://www.cnblogs.com/qingheshiguang/p/14360977.html
Copyright © 2011-2022 走看看