假设我有两个具有不同意图的线程(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
});```发布于 2019-09-07 15:20:57
为什么你认为线程没有并发运行?为了方便地在线程之间传递数据,您可以使用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");
}https://stackoverflow.com/questions/57831428
复制相似问题