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

西安响应式网站建设公司pc优化工具

西安响应式网站建设公司,pc优化工具,做日语网站,网站域名放国外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/301074.html

相关文章:

  • 营销手机网站制作公司怎么做网站推广
  • 做网站编程要学什么企业网站制作要求
  • 网站建设维护php百度投诉中心24人工 客服电话
  • 文化传播做网站推广吗如何去推广
  • 网站怎么做rss订阅功能广州竞价托管代运营
  • 网站建设入驻网店推广培训
  • lamp 做网站西安网站制作推广
  • 如何升级网站后台百度快照客服电话
  • wp网站如何做文件的付费下载百度关键词推广公司哪家好
  • 深圳北斗部标平台网站建设百度搜索流量查询
  • 做网站行业现状宁波seo网络推广优质团队
  • 做网站销售那里找客户外链生成工具
  • 二个字最旺财的公司名字宁波优化网站哪家好
  • 西安便宜做网站的seo关键词如何布局
  • 私人承接做网站多少钱网站建设费用多少钱
  • 怎么做的网站收录快seo网站推广与优化方案
  • 加强企业网站建设的通知抖音搜索seo
  • 网站信任的体验如何做企业全网推广
  • 武汉定制公交网站seo就业前景
  • 做房地产网站建设项目营销推广策划
  • 做网站需要成立公司吗十大室内设计网站
  • 局门户网站的建设网络推广工具有哪些
  • 网站有什么好处seo网站优化案例
  • 电子商务网站建设是什么qq群推广拉人
  • 做包装看什么网站在线看网址不收费不登录
  • 孝义网站开发免费注册网站
  • 专门做酒店自助餐的网站长沙网站推广排名优化
  • 快速做网站公司哪家好推广普通话的手抄报
  • 网站美工和平面设计师如何建立一个网站
  • 青岛商媒做网站怎么样济南seo官网优化