在本文中,我们将介绍 Crossbeam crate,它为 Rust 中的并发编程提供了工具。它被 Rust 生态系统中的许多库和框架广泛使用——前提是并发编程在其领域内。
这篇由 Aaron Turon 撰写的精彩博客文章在 2015 年介绍了 Crossbeam,并对使用 Rust 进行无锁编程所带来的挑战提供了一些深刻的见解;如果你有时间,我绝对建议你读一读。
事不宜迟,让我们深入研究使用 Crossbeam 在 Rust 中进行并发编程。
跳跃前进:
-
Rust 中的并发编程
-
设置
-
原子单元示例
-
数组队列示例
-
渠道示例
-
等待组示例
Rust 中的并发编程
这样做的 TL;DR 是可以使用 Rust 构建高效的无锁数据结构,但Windows 11如何更改Microsoft store应用商店国家和地区?实际上您需要构建一种内存回收机制——就像垃圾回收器一样。
在上面博客中概述的案例中,Turon 实现了一个基于时代的内存管理 API,它可以用作在 Rust 中构建无锁数据结构的基础。
这种基于纪元的内存回收机制也Windows 11无法拖放移动文件怎么办?分享10种修复方法是该库的一部分 - 如果您想了解更多信息,它有据可查。
如果你不太熟悉无锁编程,你可以看看这个很棒的介绍。
在这篇文章中,我们将看看Crossbeam的API的一部分,并实现一些简单的示例,展示如何使用它以及为什么它是一个很棒的工具。
如果您有兴趣查看整个 API 以更深Windows 11如何清除和重置Microsoft Store存储缓存?分享4种简单有效的方法)入地了解 Crossbeam 中的不同并发编程工具,您还可以查看文档。
让我们开始吧!
设置
要继续学习,您只需夏天安卓手机发烫怎么办?记住这19个知识点教你快速降温要最近的 Rust 安装(撰写本文时的最新版本是 1.64.0)。
首先,创建一个新的 Rust 项目:
cargo new rust-crossbeam-example cd rust-crossbeam-example
接下来,编辑文件并添加所需的依赖项:Cargo.toml
[dependencies] crossbeam = "0.8.2" rand = "0.8.5"
注:横梁,是我们接下来的示例🙂所需要的全部rand
AtomicCell例
我们将从 开始,Rust 的线程安全实现。AtomicCell``Cell
Cell`是一个可变的内存位置 - 就像现Win10电脑文件夹怎么设置密码?无需任何软件保护文件夹在一样 - 不同之处在于它是线程安全的,因此多个线程可以同时访问和改变内存位置,而不会发生数据争用。`AtomicCell
我们可以通过生成线程来测试这一点 — 在某些情况下,我们还可以加载和打印 中的值,而在另一些线程中,递增并打印它。线程完成后,结果始终需要相同。AtomicCell
首先,让我们定义一个帮助程序,趣知笔记它采用一个包含 .应该定义我们的可变内存位置、线程编号以及它是否应该存储某些东西。run_threadArc