求救大神!!
后台希望实现发送n条mqtt消息的发送,希望
1.发送完成后退出
2.中间如果收到信道传过来的cancel信号,停止发送
使用tokio::select实现
for i in 0..100 {
tokio::select! {
_ = async{ sendmsg(i) }=> {
info!("开始发送第{:?}条消息完成", i);
},
Ok(sig) = async{ c_s.recv() } => {
if sig == tcid {
break;
}
}
}
sleep(Duration::from_secs(mqttinfo.interval.try_into().unwrap()));
}
如上,正常情况希望执行sendmsg,发送mqtt消息
当信道有消息,并且发送的消息和本线程的id一致,就退出
问题: 这个select后面的两条路,会随机执行
随机发了几条消息,然后pending了,可能在等channel的消息。
求大神看看这个程序哪里有问题。
1
共 2 条评论, 1 页
评论区
写评论多谢大神,使用select解决,tokio::select还是比较麻烦
select里的分支不用async包着,换成对应的异步方法