Re:How to think about `async`/`await` in Rust
by starcraft2wol on Wednesday July 05, 2023 @12:49PM
(#36603124)
> when you're very I/O bound, you have one thread
Yes, but this is very unusual. In a web server, you have pool of threads that can respond to incoming connections. When one is blocking, another is ready to go. All the transition are handled transparently by the kernel.
If you have compute-bound components, things get more complicated. If you have threads, locks, and async, all in one program, things get much more complicated. I'm not sure that's a win. At some point, it's easier to use something like Go's green-thread "goroutines", which try not to block, but can block if they have to.