What's the Benefit/Allure of Async/Await vs. CSP/Green Threads (and Other Concurrency Models)?

53 points Veqq

I come from a go background where we brush off questions about Async as ludicrous. In this community though, with more power over the runtime and language primitives, people seriously entertain Async/Await/Future style, why?

It seems that rust removed native green threads as against it's philosophy: https://stackoverflow.com/questions/29428318/why-did-rust-remove-the-green-threading-model-whats-the-disadvantage#29430403 but there are good CSP libraries e.g. https://github.com/Xudong-Huang/may or things like https://github.com/rayon-rs/rayon and yet people really like e.g. Tokio for Async/Await (although it also has greenthreads!) What am I missing?

The Async/Await style seems far more complicated than wait groups, muxes, message passing and so on - since with CSP you just need to set up a few blockers, while in Await you need to promote things. So surely there must be a benefit I'm not understanding?


I'm also curious how the actor model and others compare.