[GO] Stackful coroutine implementation summary
I checked it many times and was tired, so I will summarize it.
Coroutines
C
- libcoro
--ʻUcontext.h` system
--Dual license of GPL and Permissive (?)
- coroutine
--ʻUcontext.h` system
--Similar to libcoro
- libaco
--Detonation velocity (see benchmark)
--Only X86 supported (as of November 19, 2018)
- libwire
--With utilities for IO and synchronization
--Libcoro base
C++
Rust
- May
- Battery included
--Library below: generator-rs
--Supported for x86 only (as of November 19, 2018)
- "Don't exceed the coroutine stack. It will trigger undefined behavior."
- coroutine-rs
--Use the corpse of libgreen
- Below is context-rs
Context switch
C
- ucontext.h
--Ancient technology
--I'm worried about implementation and performance
C++
Rust
bonus
- Go
――The stack is connected
--Move is possible because there is a Stackmap
--Work stealing scheduler
--Default stack size is 2KB
- LLVM Coroutine
- Stackless coroutine
--Allocation can be done on both heap and stack
- C++ 20: Coroutines
- C++++++++++++++++++++++++++++++++++++
Other