The Rust Programming Language - 第16章 无畏并发 - 16.4 使用Sync和Send trait的可扩展并发

16 无畏并发

安全高效的处理并发编程是Rust的另一个主要的目标

内存安全和高效编程一直都是很多语言追求的目的,Rust采用所有权和类型系统来平衡处理这一点

本章我们将会了解

1.如何创建线程来同时运行多端代码

2.消息传递并发,其中channel 被用来在线程之间传递消息

3.共享状态并发,其中多个线程可以访问同一片数据

4.Sync和Send trait,将Rust的并发保证扩展到用户定义的以及标准库提供的类型中

16.4 使用Sync和Send trait的可扩展并发

Rust的并发模型中,语言本身对并发支持比较少,但是由于Rust语言本身的设计,反而在做并发编程的时候具有很高的效率

不过,很少不代表没有,两个内嵌于语言的并发概念是std::marker 中的 Sync 和 Send trait

通过 Send允许在线程之间转移所有权

Send标记 trait表明类型的所有权可以在线程间传递。几乎所有的Rust类型都是Send的,不过有一些类外,如R c.因为clone之后并尝试将所有权转移到另一个线程,这两个线程都可能同时更新引用计数。因此,R c被实现为用于单线程场景,这时不需要为拥有线程安全的引用计数而付出性能代价

因此,Rust类型系统和trait bound确保永远也不会意外的将不安全的Rc在线程间发送,强行编译会得到the trait Send is not implemented for Rc<Mutex<i32>>这样的错误,使用Arc就Ok

任何完全由send的类

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值