Rust 使用线程和通道来防止代码死机
我正在写我的第一个Rust程序,但陷入了恐慌。代码一直运行到恐慌评论,这里是否有明显的遗漏Rust 使用线程和通道来防止代码死机,rust,Rust,我正在写我的第一个Rust程序,但陷入了恐慌。代码一直运行到恐慌评论,这里是否有明显的遗漏 fn print_num(n:i32) { println!("Hi! {}", n); } fn main() { let (s, r) = std::sync::mpsc::channel(); let (s1, r1) = std::sync::mpsc::channel(); std::thread::spawn(move || {
fn print_num(n:i32)
{
println!("Hi! {}", n);
}
fn main()
{
let (s, r) = std::sync::mpsc::channel();
let (s1, r1) = std::sync::mpsc::channel();
std::thread::spawn(move || {
let i = r.recv().unwrap();
print_num(i);
s1.send(i+1).unwrap();
});
s.send(0).unwrap();
println!("Got back {}", r1.recv().unwrap());
// Panic code below
s.send(1).unwrap();
println!("Got back {}", r1.recv().unwrap());
println!("Hello, world!");
}
对
s.send()
的第二个调用返回一个。文件内容如下:
只有当通道的接收端断开连接时,发送操作才会失败,这意味着永远无法接收数据
您的接收器r
被移动到线程中,读取一条消息,然后被销毁。下一次呼叫没有人接收消息1。也许您希望线程在某种循环中重复处理消息
相关的:
一,。这可能并不总是死机,因为它依赖于线程的执行顺序。对
s.send()的第二次调用返回一个错误。文件内容如下:
只有当通道的接收端断开连接时,发送操作才会失败,这意味着永远无法接收数据
您的接收器r
被移动到线程中,读取一条消息,然后被销毁。下一次呼叫没有人接收消息1。也许您希望线程在某种循环中重复处理消息
相关的:
一,。这可能并不总是死机,因为它依赖于线程执行顺序