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

25|齐头并进,胜利会师:Barrier屏障

你好,我是鸟窝。
在上节课,我们已经了解了在生产者消费者场景中常用的同步原语——条件变量。这节课我们继续学习 Barrier,我们这里把它翻译成屏障。
在并发编程中,多个线程或进程协同工作以完成一项任务是很常见的。然而,在某些情况下,我们需要确保所有参与者都到达某个特定的“汇合点”后,才能继续执行。这时,Barrier(屏障)就派上了用场。
如果你是个体育爱好者,当你看田径比赛中百米赛跑或者跨栏比赛时,你会看到比赛前所有的运动员都会站在起跑线上,这就相当于一个屏障。等所有的运动员就位后,发令枪响起,运动员就可以跑起来了。
Barrier 就是这样一种同步原语,它允许一组线程或进程相互等待,直到所有成员都到达某个预定的点。
到达屏障的线程或进程会被阻塞,直到所有其他成员也到达。
一旦所有成员都到达,它们才能同时继续执行。
Barrier 内部维护一个计数器,初始化为参与者的数量。每个线程或进程到达屏障时,计数器减一。当计数器变为零时,表示所有参与者都已到达,屏障释放所有线程或进程。
Rust 标准库中 Barrier 是可重用的。也就是等所有的参与者都已经达到后, Barrier 又可以用来下一轮的等待了。

Barrier 介绍

确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. Barrier(屏障)是并发编程中常用的同步原语,用于确保多个线程或进程在继续执行之前都到达某个特定的同步点。 2. Barrier内部维护一个计数器,初始化为参与者的数量,当所有参与者都到达时,计数器变为零,屏障释放所有线程。 3. Rust标准库中的Barrier是可重用的,通过`new`函数创建,并使用`wait`函数等待其他线程到达同步点。 4. Barrier可以进行多轮的同步等待,适用于需要多阶段协同工作的场景。 5. 在并发计算中,Barrier可以用于协调多个线程对大型任务的并行处理,如矩阵乘法计算。 6. Barrier与Condvar虽然都有阻塞和等待的功能,但它们在实现上有明显的不同。 7. 在H2O工厂问题中,Barrier可以被使用来确保两个氢原子和一个氧原子同时结合形成一个水分子,满足线程安全、正确性和效率的要求。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部