Since tokio-uring needs to inject a driver into the runtime to utilize io_uring, is it possible to support this with tokio or will I just need to replace this with tokio_uring::start(async { ... });?
I ask because after reviewing the builder docs it doesn't appear that we have options like worker_threads, on_thread_start, and on_thread_stop to initialize the tokio_uring runtime with.
Would it be possible to nest the tokio-uring runtime within a standard tokio runtime like so for ad hoc file operations?
runtime.block_on(async {
// do stuff
// io tasks
let (tx, rx) = unbounded_channel();
tokio_uring::start(async {
let tx = tx.clone();
let file = File::open("hello.txt").await?;
let buf = vec![0; 4096];
let (res, buf) = file.read_at(buf, 0).await;
let n = res?;
tx.send(buf[..n])?;
Ok(())
});
while let Some(bytes) = rx.recv().await {
// handle recv
}
// do other stuff
});
I'm sure nested async runtimes are against best practice, but I wanted to reach out here and get consensus of how others are integrating tokio-uring into their projects if they depended on the standard tokio builder options. I may be overthinking this or missing something. Any pointers in the right direction would be helpful.
Hello!
I am currently utilizing the standard
tokio
crate to start an asynchronous runtime for my app like so:Since tokio-uring needs to inject a driver into the runtime to utilize io_uring, is it possible to support this with tokio or will I just need to replace this with
tokio_uring::start(async { ... });
?I ask because after reviewing the builder docs it doesn't appear that we have options like
worker_threads
,on_thread_start
, andon_thread_stop
to initialize the tokio_uring runtime with.Would it be possible to nest the tokio-uring runtime within a standard tokio runtime like so for ad hoc file operations?
I'm sure nested async runtimes are against best practice, but I wanted to reach out here and get consensus of how others are integrating tokio-uring into their projects if they depended on the standard tokio builder options. I may be overthinking this or missing something. Any pointers in the right direction would be helpful.