(no title)
prngl | 11 months ago
> You could allocate a piece of memory for a coroutine stack; let the coroutines on it push and pop stack frames like ordinary function calls; and have a special ‘yield’ function that swaps out the stack pointer and switches over to executing on another stack. In fact, that’s not a bad way to add coroutines to a language that doesn’t already have them, because it doesn’t need the compiler to have any special knowledge of what’s going on. You could add coroutines to C in this way if you wanted to, and the approach would have several advantages over my preprocessor system.
In C minicoro is a nice library that provides just that: https://github.com/edubart/minicoro
In Zig there's zigcoro: https://github.com/rsepassi/zigcoro
Another source I found enlightening on coroutines is "Coroutines in Lua": https://www.lua.org/doc/jucs04.pdf
spacechild1|11 months ago
jonahx|11 months ago
kmacleod|11 months ago
jpc0|11 months ago
They are pretty good as a task abstraction with parallelism as well.