当前位置: 首页 > wzjs >正文

南京 网站建站学技术的培训机构

南京 网站建站,学技术的培训机构,沈阳做网站优秀公司,岚县网站建设Rust 学习笔记:通过 Send 和 Sync trait 实现可扩展并发性 Rust 学习笔记:通过 Send 和 Sync trait 实现可扩展并发性Send trait:允许在线程之间转移所有权Sync trait:允许多线程访问手动实现 Send 和 Sync 是不安全的练习题 Rust…

Rust 学习笔记:通过 Send 和 Sync trait 实现可扩展并发性

  • Rust 学习笔记:通过 Send 和 Sync trait 实现可扩展并发性
    • Send trait:允许在线程之间转移所有权
    • Sync trait:允许多线程访问
    • 手动实现 Send 和 Sync 是不安全的
    • 练习题

Rust 学习笔记:通过 Send 和 Sync trait 实现可扩展并发性

处理并发的选项并不局限于语言或标准库。

你可以编写自己的并发特性,也可以使用其他人编写的并发特性。

Send 和 Sync trait 是 Rust 标准库下的 marker trait。

Send trait:允许在线程之间转移所有权

Send trait 表明实现 Send 的类型的值的所有权可以在线程之间转移。

几乎每个 Rust 类型都是 Send,但也有一些例外,比如 Rc<T>。

Rc<T> 不能实现 Send,因为如果你克隆了一个 Rc<T> 值,并试图将克隆的所有权转移给另一个线程,两个线程可能同时更新引用计数。出于这个原因,Rc<T> 是为在单线程情况下使用而实现的。

Rust 的类型系统和 trait 约束确保不会将非 Send 类型跨线程发送。

任何完全由 Send 类型组成的类型也会自动标记为 Send。

几乎所有基本类型都实现了 Send,原始指针除外。

Sync trait:允许多线程访问

Sync trait 表明,从多个线程引用实现 Sync 的类型是安全的。

换句话说,如果 &T(对 T 的不可变引用)实现了 Send,则任何类型 T 都实现了 Sync,这意味着引用可以安全地发送到另一个线程。

与 Send 类似,基本类型都实现了 Sync,完全由实现 Sync 的类型组成的类型也实现了 Sync。

智能指针小结:

  • Rc<T>:没有实现 Send,也没有实现 Sync。
  • RefCell<T>:实现 Send(如果 T 实现 Send),没有实现 Sync。在运行时执行的借用检查的实现不是线程安全的。
  • Mutex<T>:实现了 Send 和 Sync,可以用于与多个线程共享访问。
  • MutexGuard<'a, T>:实现 Sync(如果 T 实现 Sync),没有实现 Send。

手动实现 Send 和 Sync 是不安全的

因为完全由实现 Send 和 Sync 的其他类型组成的类型也会自动实现 Send和 Sync,所以我们不需要手动实现这些特性。

作为 marker trait,它们甚至没有任何方法来实现。它们只是用于执行与并发相关的不变量。

手动实现这些特征涉及实现 unsafe 的 Rust 代码。构建不由 Send 和 Sync 部分组成的新并发类型需要仔细考虑以维护安全保证。

练习题

参考视频:

  1. https://www.bilibili.com/video/BV1LdovYrEVw

假设你正在设计一个数据库连接的 API:

struct DbConnection { /* ... */ }
impl DbConnection {fn query(&self) -> DbResult {/* ... */}
}

你的数据库不支持从同一连接进行并发查询。DbConnection 应该实现哪些 marker trait?

答:Send。

http://www.dtcms.com/wzjs/566244.html

相关文章:

  • 各大招聘网站收费标准鞍山吧立山吧
  • 平台是什么意思上海网络seo
  • html5做网站好吗上交所大宗交易平台
  • 茶叶网站规划网站建设算不算固定资产
  • 电大网上作业代做网站莱芜网站建设设计外包
  • 开发app和网站建设那个好些免费织梦导航网站模板下载地址
  • 织梦网站模板做的网站有哪些企业形象
  • 做物流网站电话号码网站架构计划书
  • 建设电影网站算盗版吗提升学历励志语录
  • 做响应式网站设计图是多大的区块链系统软件开发
  • 网站建设 知识库南昌专门做网站
  • dedecms购物网站模板下载谷歌网站怎么做外链
  • 美词原创网站建设wordpress图片居中
  • 可以直接打开的网站正能量网站防火墙怎么做
  • 英文搜索网站南京最大网站建设公司
  • 网站焦点图怎么做链接模板软件app
  • 电子商务网站开发实训国家企业信用公示信息网
  • 怎样自己创建一个网站百度采购网
  • 网站服务器结构图咸阳做网站费用
  • 签订网站建设协议应注意事项国家企业信用信息
  • 做时间轴的在线网站建什么网站好
  • 做微网站需要哪种公众号开发一个软件的流程是什么
  • 高清免费爱做网站站群网站建设推广
  • 湖南建设厅官方网站官网如何申请域名邮箱
  • php 网站开发框架ap单页面应用优化
  • 微软雅黑做网站是否侵权帮忙做ppt的网站
  • 米拓网站建设教程58加盟创业网
  • 莱芜正规的网站建设app界面设计案例分析
  • 中国哪家网站做仿古做的好深圳建网站就找兴田德润
  • 网站建设技术风险分析WordPress分享到微博代码