1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-22 15:24:46 -05:00

fix: run blocking function on a different task (#2570)

This avoids freezing the current task if the fn blocks indefinitely
This commit is contained in:
Jimmy Cao 2019-06-27 01:12:11 +02:00 committed by Ryan Dahl
parent 6906a2f75e
commit fb6d57a281

View file

@ -793,9 +793,10 @@ where
let result_buf = f()?;
Ok(Op::Sync(result_buf))
} else {
Ok(Op::Async(Box::new(tokio_util::poll_fn(move || {
convert_blocking(f)
}))))
Ok(Op::Async(Box::new(futures::sync::oneshot::spawn(
tokio_util::poll_fn(move || convert_blocking(f)),
&tokio_executor::DefaultExecutor::current(),
))))
}
}