主题
并发安全与内存管理
Rust 在并发环境中保证内存安全,利用类型系统防止数据竞争和资源冲突。
数据竞争与内存安全
数据竞争是两个或多个线程同时访问同一内存位置且至少一个为写操作。Rust 的所有权和借用规则在编译期避免这类问题。
线程安全的类型
Send
trait:表示类型可以安全地在线程间传递。Sync
trait:表示类型的引用可以安全地在多线程间共享。
使用 Mutex
和 Arc
共享状态
通过互斥锁 Mutex
保护共享数据,原子引用计数 Arc
共享所有权:
rust
use std::sync::{Arc, Mutex};
use std::thread;
fn main() {
let counter = Arc::new(Mutex::new(0));
let mut handles = vec![];
for _ in 0..10 {
let counter = Arc::clone(&counter);
let handle = thread::spawn(move || {
let mut num = counter.lock().unwrap();
*num += 1;
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
println!("计数器最终值: {}", *counter.lock().unwrap());
}
内存管理
Rust 通过所有权和生命周期管理内存,无需垃圾回收,确保高性能和安全。