何回も調べて疲れたのでまとめる。
Coroutines
C
-
libcoro
-
ucontext.h
系 - GPLとPermissive系(?)のデュアルライセンス
-DCORO_LOSER
-
-
coroutine
-
ucontext.h
系 - libcoro似
-
-
libaco
- 爆速(ベンチマーク参照)
- X86のみサポート(2018/11/19現在)
-
libwire
- IOや同期のためのユーティリティ付
- libcoroベース
C++
Rust
-
May
- Battery included
- 下のライブラリ: generator-rs
- x86のみサポート(2018/11/19現在)
- "Don't exceed the coroutine stack. It will trigger undefined behavior."
-
coroutine-rs
- libgreenの亡骸を使用
- 下はcontext-rs
Context switch
C
-
ucontext.h
- 古代技術
- 実装・性能が気になる
C++
Rust
-
context-rs
- zonyitooさん作
- Boost.Contextのポートっぽい
おまけ
-
Go
- スタックはひとつながり
- Stackmapがあるのでmove可能
- Work stealingスケジューラ
- デフォルトスタックサイズは2KB
-
LLVM Coroutine
- Stackless coroutine
- アロケーションはヒープとスタック両方いける
-
C++ 20: Coroutines
- C++++++++++++++++++++++++++++++++++++