rust物资刷新机制_Rust语言无锁且无垃圾回收的并发机制

新锐语言Rust颠覆了无锁 + GC的传统并发模型。

很多人认识到类似JVM那样的垃圾回收机制(GC)的优点是:易于构建高性能无锁的数据结构,因为手工管理这些数据结构不是一件易事,而GC可以很轻松的完成。但是新锐语言Rust开始颠覆这一常识。

使用Rust能够建立一种对并发数据结构进行内存管理API:

1. 非常容易地实现类似GC那样,实现无锁的数据结构

2. 比并发GC有更小更可预期的开销。

Rust非常易于实现一个类似Java 无锁队列,作者称为Crossbeam, 并且与Java进行了性能对比,下图中的Crossbeam MSQ是使用Rust Crossbeam编写的无锁队列:

上面两张图一个是MPSC,一个是MPMC:

1. MPSC是多个生产者 一个消费者场景,两个线程重复发送消息,一个消息接收消息。

2.MPMC代表多个生产者多个消费者场景,两个线程发送并且两个线程接收。

从上面对比看出,Rust Crossbeam性能无疑是胜出Scala或Java无锁队列。

那么为什么Java/Scala在MPMC的测试场景中性能要好于MPSC?

答案很简单:因为垃圾回收,在MPSC中,生产者一直比消费者超量运行(两个生产者对一个消费者),那么队列中的数据因为消费者来不及移除,导致慢慢增长,这些都会增加垃圾回收的成本,特别是对于实时数据集不断变化的场景。

而在Rust语言中,管理垃圾回收的成本是固定的,不会像JVM那样随着数据量增长成本也随着增加,它是和线程数目成比例关系的,而不是活动数据的容量(这是GC的问题),这就解释了为什么能得到更好与预期一致的性能。

[该贴被banq于2015-08-28 10:16修改过]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值