linux

Linux下Rust并发编程有哪些技巧

小樊
36
2025-05-29 22:49:47
栏目: 编程语言

在Linux下使用Rust进行并发编程时,可以采用以下几种技巧和工具:

基本概念

多线程并发

消息传递实现并发

异步编程

异步运行时

示例代码

多线程并发示例

use std::thread;

fn main() {
    let mut handles = vec![];
    for i in 0..10 {
        let handle = thread::spawn(move || {
            println!("线程 {} 正在执行!", i);
        });
        handles.push(handle);
    }
    for handle in handles {
        handle.join().expect("线程发生错误!");
    }
    println!("所有线程执行完毕!");
}

消息传递示例

use std::sync::mpsc;
use std::thread;
use std::time::Duration;

fn main() {
    let (tx, rx) = mpsc::channel();
    thread::spawn(move || {
        let vals = vec!["消息1", "消息2", "消息3"];
        for val in vals {
            tx.send(val).expect("无法发送消息!");
            thread::sleep(Duration::from_secs(1));
        }
    });
    for received in rx {
        println!("接收到: {}", received);
    }
}

异步编程示例

use tokio::time::{sleep, Duration};

#[tokio::main]
async fn main() {
    let task1 = async {
        println!("开始任务1");
        sleep(Duration::from_secs(1)).await;
        println!("任务1完成");
    };
    let task2 = async {
        println!("开始任务2");
        sleep(Duration::from_secs(2)).await;
        println!("任务2完成");
    };
    tokio::join!(task1, task2);
    println!("所有任务完成");
}

通过这些技巧和工具,Rust在Linux下的并发编程中能够提供高效、安全和易用的解决方案。

0
看了该问题的人还看了