看啥推荐读物
专栏名称: dotNET跨平台
专注于.NET Core的技术传播。在这里你可以谈微软.NET,Mono的跨平台开发技术。在这里可以让你的.NET项目有新的思路,不局限于微软的技术栈,横跨Windows,Linux 主流平台
目录
相关文章推荐
今天看啥  ›  专栏  ›  dotNET跨平台

C# ConcurrentBag的实现原理

dotNET跨平台  · 公众号  ·  · 2021-05-14 08:00
一、前言笔者最近在做一个项目,项目中为了提升吞吐量,使用了消息队列,中间实现了生产消费模式,在生产消费者模式中需要有一个集合,来存储生产者所生产的物品,笔者使用了最常见的List集合类型。由于生产者线程有很多个,消费者线程也有很多个,所以不可避免的就产生了线程同步的问题。开始笔者是使用lock关键字,进行线程同步,但是性能并不是特别理想,然后有网友说可以使用SynchronizedList来代替使用List达到线程安全的目的。于是笔者就替换成了SynchronizedList,但是发现性能依旧糟糕,于是查看了SynchronizedList的源代码,发现它就是简单的在List提供的API的基础上加了lock,所以性能基本与笔者实现方式相差无几。最后笔者找到了解决的方案,使用ConcurrentBag ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照