欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > C# 多线程 安全数据结构

C# 多线程 安全数据结构

2025/1/23 18:03:22 来源:https://blog.csdn.net/Marzlam/article/details/145207680  浏览:    关键词:C# 多线程 安全数据结构

多线程技术 在如今 cpu技术发展的前提下,可以说是高频率使用技术,自然会有相应的一些封装好的 数据结构 在内部满足了 线程安全,以供使用。

  1. ConcurrentQueue 线程安全队列 队列的特点 先进先出 如何保证线程安全的其实就是 用了线程同步的spinwait 混合模式的方案
    如何使用API 就是可以调用Enqueue方法向队列中加入元素。TryDequeue方法试图取出队列中的第一个元素,而 TryPeek方法则试图得到第一个元素但并不从队列中删除该元素
  2. ConcurrentStack 线程堆栈 先进后出 没有锁 只使用 cas 操作
    可以使用Push和PushRange方法添加元素,使用TryPop和TryPopRange方法获取元素,以及使用TryPeek方法检查元素
  3. ConcurrentDictionary 线程字典 读比普通字典性能高 写的话如果一个线程会比普通字典慢 但是 并发多个线程就好了 因为
    ConcurrentDictionary的实现使用了细粒度锁 普通字典是 粗粒度锁
    4.ConcurrentBag是一个支持重复元素的无序集合
    5.BlockingCollection是对IProducerConsumerCollection泛型接口的实现的封装
    上面队列 堆栈 还有ConcurrentBag 都是 继承IProducerConsumerCollection接口的,也就是说BlockingCollection 可以灵活的使用 这些类型

因为实现 IProducerConsumerCollection 的这些集合 其实底层 是链表结构
所以在使用时 判断集合的时候 count操作 复杂度On 所以使用isempty O1

字典的话读取是需要锁操作的所以 也尽量避免Count, IsEmpty, Keys, Values, CopyTo及ToArray 这些操作

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com