
Rust 在 Linux 平台上的并发机制表现得尤为出色,这得益于其标准库提供的丰富并发原语。以下将介绍一些核心概念及示例代码,帮助你更好地掌握 Rust 的并发编程技巧。
线程(Threads): Rust 提供了 std::thread 模块用于创建和管理线程。
use std::thread;
fn main() {
let handle = thread::spawn(|| {
println!("这是新线程!");
});
handle.join().unwrap();
}共享内存与互斥锁(Mutex): 利用 Mutex 可以确保多个线程安全地访问共享资源。
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());
}线程间通信(Channels): 使用 mpsc 模块可以实现多生产者单消费者的消息传递模式。
use std::sync::mpsc;
use std::thread;
fn main() {
let (tx, rx) = mpsc::channel();
thread::spawn(move || {
tx.send("hello").unwrap();
});
let message = rx.recv().unwrap();
println!("Received: {}", message);
}原子操作(Atomic Operations): 利用 std::sync::atomic 模块执行低级的原子操作。
use std::sync::atomic::{AtomicUsize, Ordering};
use std::sync::Arc;
use std::thread;
fn main() {
let counter = Arc::new(AtomicUsize::new(0));
let mut handles = vec![];
for _ in 0..10 {
let counter = Arc::clone(&counter);
let handle = thread::spawn(move || {
counter.fetch_add(1, Ordering::SeqCst);
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
println!("计数器值: {}", counter.load(Ordering::SeqCst));
}读写锁(RwLock): 使用 std::sync::RwLock 允许多个读取线程同时访问数据,而写入线程则独占访问。
use std::sync::{Arc, RwLock};
use std::thread;
fn main() {
let data = Arc::new(RwLock::new(0));
let mut handles = vec![];
for i in 0..10 {
let data = Arc::clone(&data);
let handle = thread::spawn(move || {
let mut num = data.write().unwrap();
*num += 1;
});
handles.push(handle);
}
for handle in handles {
handle.join().unwrap();
}
println!("数据值: {}", *data.read().unwrap());
}借助上述内容和工具,你可以更轻松地编写出高效、安全的并发程序。
以上就是Rust在Linux中的并发处理的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号