Earlier quoted context omitted.
> Nah, coroutines/async/etc often lives in various threads (ie, the workers can schedule one of them on different threads during the lifetime and they live concurrently), so you still have all the issues of threading (+ new ones since things like thread-local variables aren't reliable if an async/coroutines moves threads between calls). In cooperative scheduling how is it possible to have two coroutines running concu…
You're thinking of older early coroutines or in singlethreaded runtimes (JS). It's M:N threading, most logical threads/tasks are more lightweight than full OS threads, the logical ones should preferably behave cooperatively but they can be scheduled onto any number of real worker threads (usually these systems picks something like 2x worker threads compared to real CPU/Core count to manage some codepaths not being as…
If you know how to create asyncable types on .NET, the magic methods expected by C++ compiler will feel familiar.