【crossbeam系列】4 crossbeam-channel:加强版channel

本文探讨了标准库channel的不足,如不支持MPMC、缺少select功能等,并介绍了crossbeam库中加强版的channel,它提供统一的Sender类型,支持MPMC、线程间引用传递及select操作,性能更优。
摘要由CSDN通过智能技术生成

这一期的内容会轻松一些,讲讲crossbeam中的channel。可是有人就要问了在标准库里面已经有了std::sync::mpsc,为什么crossbeam又要搞出一套channel呢?首先我们来看看标准库中的channel有哪些不足吧

标准库中channel的不足

  1. Receiver不能被clone,是MPSC的channel。理想状况我们希望能有MPMC的channel

  2. Sender和Receiver不是Sync

  3. 在Go语言中,channel一般和select语句一起使用,但是标准库中的channel并不支持select

  4. 有限容量(Bounded)的channel内部实现就是一个简单的Mutex<VecDeque<T>>,性能比Go语言的channel还差

  5. 有Sender(=Unbouded)和SyncSender(=Bounded)的区分,用起来不统一。

crossbeam中加强版的channel

首先,无论容量是否有限,Sender类型统一成一种,这样用起来就很方便。其次对有限容量的channel进行了重写(还记得上一期我们讲的Deque其实就是为了消除Mutex<VecDeque<T>>产生的瓶颈么,这里也类似。对于1-3点:(在此之前我们先简单讲下如何创建crossbeam的channel)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值