Rust 异步与多线程
该文档为个人学习记录,可能存在大量错误
概述
Rust中std库实现异步与多线程的方式包括了async/await
和thread
,二者在官方文档中分别对应了high-level
和low-level
的场景。
Rust中的数据同步
实现多线程必须要考虑到数据同步的问题,Rust给出的解决方案是Mutex<T>
和Arc<T>
,二者可以分别对应到不具备线程安全的RefCell<T>
和Rc<T>
。两组容器的使用方式基本一致,通常情况下的一个使用实例是Arc<Mutex<T>>
从而保证某个共享的数据可以存在多个所有者,同时实现内部可变性。
std::thread
该实现方式为 The Book 中讲述的实现方式,最基本的代码实现形式为
1 |
|
上面的代码实现创建了一个新的线程,并返回对应线程的handler
,基于对handler
的控制可以实现对该线程的管理。其中handler
具有JoinHandler
类型,实现了三个有关多线程的方法,分别是join()
,thread()
和is_running()
。其中join()
方法使得执行该方法的线程会在执行到handler.join()
时阻塞等待线程的退出,thread()
返回handler
对应的线程信息,is_running()
则指示线程是否正在运行。
async/await
TODO
Rust 异步与多线程
http://anyin233.github.io/2022/02/18/Rust-异步与多线程/