我想终止从tokio::io::lines
流中读取。我将它与oneshot
的未来合并,并终止了它,但tokio::run
仍在工作。
use futures::{sync::oneshot, *}; // 0.1.27
use std::{io::BufReader, time::Duration};
use tokio::prelude::*; // 0.1.21
fn main() {
let (tx, rx) = oneshot::channel::<()>();
let lines = tokio::io::lines(BufReader::new(tokio::io::stdin()));
let lines = lines.for_each(|item| {
println!("> {:?}", item);
Ok(())
});
std::thread::spawn(move || {
std::thread::sleep(Duration::from_millis(5000));
println!("system shutting down");
let _ = tx.send(());
});
let lines = lines.select2(rx);
tokio::run(lines.map(|_| ()).map_err(|_| ()));
}
我怎样才能停止阅读这篇文章呢?
发布于 2019-06-13 07:31:58
谢谢你的评论和纠正我的句子。
我试图阻止这个非阻塞的Future
,并成功了。
let lines = Interval::new(Instant::now(), Duration::from_secs(1));
我的轻描淡写是,在这种情况下,用tokio threadpool::blocking
包装阻塞Future
是可行的。我待会再试。
非常感谢。
https://stackoverflow.com/questions/56555513
复制相似问题