rust 多线程
时间: 2023-06-28 20:10:58 浏览: 126
wasm-mt:用于Rust和WebAssembly的多线程库
Rust 语言天生支持多线程编程,它提供了很多标准库和语言特性来方便地实现多线程应用。下面是一些常用的 Rust 多线程编程相关的特性和库:
1. `std::thread` 模块:Rust 提供了一个线程创建和管理的标准库模块。使用该模块可以创建新线程,等待线程执行完毕,以及线程间通信等操作。
2. `std::sync` 模块:该模块提供了多线程编程中常用的同步原语,例如 Mutex、Condvar、Barrier、RwLock 等。这些同步原语可以用于线程之间的互斥访问共享资源、条件变量通信、屏障同步等操作。
3. `std::thread::spawn` 函数:该函数可以用于创建一个新的线程,并在新线程中执行一个闭包。例如:
```
use std::thread;
fn main() {
let handle = thread::spawn(|| {
// 在新线程中执行的代码
println!("Hello, world!");
});
// 主线程继续执行其他代码
// 等待新线程执行完毕
handle.join().unwrap();
}
```
4. `std::sync::Mutex` 类型:该类型可以用于实现线程间的数据同步。例如:
```
use std::sync::Mutex;
fn main() {
let counter = Mutex::new(0);
let mut handles = vec![];
for _ in 0..10 {
let handle = thread::spawn(|| {
// 获取 Mutex 的锁
let mut num = counter.lock().unwrap();
// 对共享数据进行修改
*num += 1;
});
handles.push(handle);
}
// 等待所有线程执行完毕
for handle in handles {
handle.join().unwrap();
}
// 输出最终结果
println!("Result: {}", *counter.lock().unwrap());
}
```
除了上述特性和库外,Rust 还提供了很多其他的多线程编程相关的语言特性和库,例如 `std::sync::mpsc` 模块用于实现多生产者、单消费者的通道通信,`std::thread::sleep` 函数用于线程睡眠等待等。
阅读全文