It annoys me that coroutines are described as "functions that can be suspended"
Any function can be suspended. It literally happens constantly when a process or thread gets pre-empted by the OS or asynchronous hardware, with the stack being the mechanism to save to and restore context from. So, this super common way of describing coroutines is just frustrating because it's not it!
Coroutines are functions that can be suspended in a **controlled, intentional (as in, explicitly expressed) way**, with the relevant context (coroutine frame) being placed _not_ on the stack like a function's usual context, but on the heap (usually).
I wish someone had broken it down for me in this way before, so hopefully it helps someone else too.
https://redd.it/1wgm4jx
@r_cpp
Post #25789
6