Skip to content

Instantly share code, notes, and snippets.

@MarinPostma
Last active September 12, 2023 15:56
Show Gist options
  • Select an option

  • Save MarinPostma/d625e16107020b4b42f5f1b8908c9e67 to your computer and use it in GitHub Desktop.

Select an option

Save MarinPostma/d625e16107020b4b42f5f1b8908c9e67 to your computer and use it in GitHub Desktop.
tokio run_until bug
use std::time::Duration;
use tokio::task::LocalSet;
fn main() {
let mut builder = tokio::runtime::Builder::new_current_thread();
let tokio = builder.enable_time().start_paused(true).build().unwrap();
let local = LocalSet::new();
let fut = async move {
tokio::task::spawn_blocking(move || {
dbg!();
std::thread::sleep(Duration::from_secs(10));
dbg!();
});
dbg!();
};
local.spawn_local(fut);
tokio.block_on(async {
local.run_until(async {
dbg!();
tokio::time::sleep(Duration::from_secs(1)).await;
dbg!();
}).await;
local.run_until(async {
dbg!();
tokio::time::sleep(Duration::from_secs(1)).await;
dbg!();
}).await;
dbg!();
});
drop(tokio);
dbg!();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment