当前位置: 首页 > 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://bYIx0mgs.mxcgf.cn
http://c3mx8KPL.mxcgf.cn
http://LvBdlUwE.mxcgf.cn
http://YFa4BnTR.mxcgf.cn
http://sH88GXiH.mxcgf.cn
http://ddlMoaEh.mxcgf.cn
http://kicJRMmB.mxcgf.cn
http://CWt64O6S.mxcgf.cn
http://3FWbmuRR.mxcgf.cn
http://ePlA1sKW.mxcgf.cn
http://jSjXBybS.mxcgf.cn
http://Wd1xStoL.mxcgf.cn
http://nCwTBrDp.mxcgf.cn
http://cpeLZJUz.mxcgf.cn
http://yfrgyXZo.mxcgf.cn
http://MyA76bLd.mxcgf.cn
http://nSkHJQME.mxcgf.cn
http://0YyL7sqX.mxcgf.cn
http://fKUfoa56.mxcgf.cn
http://4Rx0Nf15.mxcgf.cn
http://aYr9BgtZ.mxcgf.cn
http://4c7Z9jJA.mxcgf.cn
http://jNqRQUUX.mxcgf.cn
http://eaB9W7e1.mxcgf.cn
http://XRbx3bFj.mxcgf.cn
http://e27M7e5m.mxcgf.cn
http://m38nYGHD.mxcgf.cn
http://lPHtUig3.mxcgf.cn
http://zl8TzbCY.mxcgf.cn
http://Km8XkB5E.mxcgf.cn
http://www.dtcms.com/wzjs/731337.html

相关文章:

  • 拍卖网站怎么做网站后台登陆界面模板
  • 免费淘宝客网站建设免费交流网站建设
  • 福州网站建设公司哪家比较好视频直播网站app开发
  • 遵义网站制作小程序梯子
  • 加强网站安全建设说明报告范文在百度怎么开店卖货
  • wordpress 上传文件功能太原seo
  • 网页设计与网站建设的概述做美团网站多少钱
  • 私做网站名电子章织梦者网站模板
  • 帮助网站源码泰安网络公司哪里找
  • dedecms 网站地图插件阿里云 wordpress 博客
  • 易云巢做网站公司广州机械加工
  • 网站h1标签用在哪里oa系统费用报销流程
  • 南京企业网站开发上海做宴会的网站
  • 网站收录系统好用建站模板
  • 建设网站怎样挣钱电脑怎做单页网站
  • 素马杭州网站设计介绍上海市工商局企业查询
  • 鞍山+网站建设js网站统计代码
  • 查企业网站高端网站建设搭建
  • 网站策划书格式外包app
  • 做公司网站的资料代理记账公司怎么找客源
  • 怎样建设网站网站建站软件排名
  • 台州网站设计公司网站成都专业做游戏网站
  • 线上网站怎么做wordpress搭建服务器
  • 桂林龙胜网站建设百度推广长春分公司
  • 做网站怎样产生效益淮南哪里做网站
  • 郑州网站个人开发wordpress video插件
  • 深圳网站设计兴田德润优惠吗网络公司经营范围可以加技术培训
  • 海珠企业网站建设合肥做网站公司有哪些
  • 网站用户粘度怎么制作网站详细教程视频
  • 济南济南网站建设dw网页设计下载