Multithreading 如何在Rust中同时运行不同的线程?

Multithreading 如何在Rust中同时运行不同的线程?,multithreading,rust,Multithreading,Rust,假设我有两个具有不同意图的线程(T1,T2)。T1负责将消息推送到队列中,T2负责弹出消息。如何实现同时运行T1和T2的方法 我试着在rust中查看现有的多线程实现和示例,但大多数都是关于为同一个作业生成多个线程 //using an Arc object of an ArrayQueue let handle1 = thread::spawn( move || { //clone arc object //push }); let handle2 = thread::spawn( move

假设我有两个具有不同意图的线程(T1,T2)。T1负责将消息推送到队列中,T2负责弹出消息。如何实现同时运行T1和T2的方法

我试着在rust中查看现有的多线程实现和示例,但大多数都是关于为同一个作业生成多个线程

//using an Arc object of an ArrayQueue
let handle1 = thread::spawn( move || {
//clone arc object
//push
});

let handle2 = thread::spawn( move || {
//clone arc object
//pop
});```

为什么您认为线程没有同时运行? 为了在线程之间轻松传递数据,您可以使用std库中的MPSC通道:

use std::time::Duration;

fn main() {
    let (sender, receiver) = std::sync::mpsc::channel();

    let sending_thread = std::thread::spawn(move || {
        for i in 0..10 {
            println!("[{:?}] Sending: {}", std::thread::current().id(), i);
            sender.send(i).unwrap();
            std::thread::sleep(Duration::from_secs(1));
        }
    });

    let receiving_thread = std::thread::spawn(move || {
        for i in receiver {
            println!("[{:?}] Received: {}", std::thread::current().id(), i);
        }
    });

    let _ = sending_thread.join();
    let _ = receiving_thread.join();
    println!("Done");
}