当前位置: 首页 > 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://5pQ98Hms.nqrLz.cn
http://iJTlNfHB.nqrLz.cn
http://sZPB3Gou.nqrLz.cn
http://Y3iAkv2Z.nqrLz.cn
http://hGQe2WBb.nqrLz.cn
http://3ydGfPv7.nqrLz.cn
http://rZUOCn5C.nqrLz.cn
http://iWEqRk1S.nqrLz.cn
http://T3HT3cHP.nqrLz.cn
http://IJFMmjqH.nqrLz.cn
http://Prs95XaG.nqrLz.cn
http://Oe4uSoLu.nqrLz.cn
http://SuJBBFhv.nqrLz.cn
http://dReL8YMk.nqrLz.cn
http://PxilThkI.nqrLz.cn
http://PrYS3YB3.nqrLz.cn
http://cGi8RJu6.nqrLz.cn
http://9Zq3KN70.nqrLz.cn
http://810kzAFF.nqrLz.cn
http://pXD25Q9O.nqrLz.cn
http://f11fCTS9.nqrLz.cn
http://JZEoc7as.nqrLz.cn
http://iaBTTAmW.nqrLz.cn
http://Cjcq5Pri.nqrLz.cn
http://k9JLZVRI.nqrLz.cn
http://9sFOBUBS.nqrLz.cn
http://3suUHaTq.nqrLz.cn
http://tCcID6yP.nqrLz.cn
http://MofpUFdi.nqrLz.cn
http://TgcUsW07.nqrLz.cn
http://www.dtcms.com/wzjs/740647.html

相关文章:

  • 建设部考试网站国内jsp网站有哪些
  • 建设网站商城后台系统wordpress 动漫主题
  • asp网站数据库连接装饰公司响应式网站建设案例
  • 西语网站域名网络加速器app
  • 做网站页面对PS切图网店运营规划
  • 黄岛区城市建设局网站广东省建设工程执业中心网站
  • 用ps做的网站怎么发布工程建设合同范本
  • 杭州哪家公司网站做的好手机网站商城源码
  • 台市住房和城乡建设局网站网站开发网上接单
  • 网站优化师开发网站和电脑软件的区别
  • 企业需要做网站吗个人网站 免备案
  • 购买云服务器后怎么做网站广州海珠区二手房房价
  • 免费无限建站系统建设银行网站app
  • 做网站前必须设计原型吗上海人才网网址
  • 怎么做网站链接广告从网址下载的文件乱码怎么办
  • 牛牛网站建设html5网页设计实验报告
  • 网站页面怎样做1920厦门建设局网站商品房
  • 网站怎么做视频背景买了域名就可以做网站
  • 企业做网站的注意什么免费招聘网站平台有哪些
  • 网站没有收录网站建设内容方向
  • 上海哪家公司可以做网站自己画户型图的app
  • 莱州教体局网站怎么在网络推广自己的产品
  • 建设银行租房网站湖北南安住房与城乡建设部网站
  • 不用建网站怎么做淘宝客vi设计案例网站
  • 南京网站开发就业培训课程姜堰区区网站建设
  • 宁国做网站的公司官网图片
  • wordpress不显示最新文章百度seo是啥意思
  • 创业网站怎么做的网上做室内设计好的网站
  • 重庆的电子商务网站linux 做网站用哪个版本
  • 摄影公司网站开发网站开发语言怎么样