Rust 并发编程实战课
晁岳攀(鸟窝)
前微博技术专家,知名微服务框架 rpcx 作者
690 人已学习
新⼈⾸单¥98
登录后,你可以任选4讲全文学习
课程目录
已更新 36 讲/共 38 讲
Rust 并发编程实战课
15
15
1.0x
00:00/00:00
登录|注册

32|包罗万象,风雨同舟:并发集合(下)

你好,我是鸟窝。
在这个课程的最后一节课,我们可以放松心态,走马观花地了解更多一些 Rust 并发编程的库。这节课我们挑几个重点的库来了解。并发原语库的更多内容,可以参考我建立的一个 Rust 并发编程的网站:https://rustcard.rpcx.io,这里我帮你梳理了 99 张卡片。
我挑的这几个库当前还在维护,并且下载量还蛮高的。一些多年已经不维护的库也不给大家推荐了。

boxcar

这个库是一个并发的 vec 库,但是它和标准库有点不同,它并提供删除的操作,而是只能添加 (appending),所以它适合那种只不断添加元素的场景。
只能添加的功能带来了一个好处:即使它的长度可以增长,它也从不为既有的元素重新分配内存,因此元素的地址在 vec 的整个生命周期内都是稳定的。此外,getpush 操作的时间复杂度均为常数时间。
它也提供了一个宏,用来快速创建一个 boxcar::vec 对象:
let vec = vec![1, 2, 3];
assert_eq!(vec[0], 1);
assert_eq!(vec[1], 2);
assert_eq!(vec[2], 3);
或者创建一个初始化容量的 vec:
let vec = vec![1; 3];
assert_eq!(vec, [1, 1, 1]);
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Rust并发编程的库包括boxcar、lockfree、arc-swap和sharded-slab,它们提供了不同的功能和特性。 2. boxcar库提供了一个并发的vec库,适合于只不断添加元素的场景,且提供了无锁的get和push方法。 3. lockfree库提供了几种常见的无锁的数据结构,解决ABA问题,但已经6年没有更新。 4. arc-swap库是一个非常常用的并发数据结构,类似于Atomic<Arc<T>>或者RwLock<Arc<T>>,但不需要锁,适用于读多写少的场景。 5. sharded-slab库为单个数据类型提供了预分配的存储,实现了一个无锁并发slab,并可以按索引获取元素,提供了Slab和Pool两种数据结构。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Rust 并发编程实战课》
新⼈⾸单¥98
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)