Say I have a socket, the
recv function of which blocks until the next packet arrives.
How can I call this function from a
Or more generally how can a block function be wrapped as if it were an
tokio_threadpool::blocking a good choice?
tokio_threadpool is a very bad choice for everything — it's an abandoned crate for an outdated version of tokio.
In tokio you can use
tokio::task::spawn_blocking. Tokio's multi-threaded runtime is a threadpool already.
tokio::task::block_in_place that is easier to use, but may not be reliable, as it can still block some unrelated tasks in some cases.
Here is a good article on the various approaches to blocking within aync code: Async: What is blocking? – Alice Ryhl