作者:禅与计算机程序设计艺术
1.简介
在 Rust 中进行并发编程最简单的方法之一就是使用线程。Rust 通过提供所有权(ownership)和借用(borrowing),并且提供了 RAII 风格的线程管理方式,让编写并发代码变得非常容易。本教程将会通过一个示例来展示如何在 Rust 中创建、管理和调度线程。为了更好的理解并发模型,我们还会提到一些 Rust 的基础概念。
2.基础知识点
Ownership and Borrowing
Rust 中的数据共享发生在两种不同的模式中:
- Copy: 数据的所有权被移动,意味着数据不能被修改或者再次分配。
- Move: 数据的所有权被转移,意味着数据可以被修改或再次分配,但其原始内存位置已经不可访问。
Data Ownership
当一个变量被分配到堆上时,它的生命周期由拥有它的那个作用域来决定。例如,如果有一个函数 create_box
创建了一个 Box ,然后这个 Box 离开了当前作用域,那么它的所有权就会被转移给另一个作用域。当函数执行完毕后,Box 会自动释放内存。相反,当一个变量被分配到栈上时,它的生命周期就和调用该函数的栈帧相同。换句话说,如果栈帧结束,那么这个变量也就被销毁了。栈上的变量通常比堆上的变量有更快的访问速度。