[GO] Zusammenfassung der stapelbaren Coroutine-Implementierung
Ich habe es oft überprüft und war müde, also werde ich es zusammenfassen.
Coroutines
C
- libcoro
--
ucontext.h
System
- Doppelte Lizenz von GPL und Permissive (?)
- coroutine
--
ucontext.h
System
- Ähnlich wie libcoro
- libaco
- Explosionsgeschwindigkeit (siehe Benchmark)
- Nur X86 unterstützt (Stand 19. November 2018)
- libwire
- Mit Dienstprogrammen für E / A und Synchronisation
- Libcoro-Basis
C++
Rust
- May
- Bibliothek unten: generator-rs
- Nur x86 wird unterstützt (Stand 19. November 2018)
- "Don't exceed the coroutine stack. It will trigger undefined behavior."
- coroutine-rs
--Verwenden Sie die Leiche von libgreen
- Unten ist context-rs
Context switch
C
- ucontext.h
- Alte Technologie
- Ich mache mir Sorgen um Implementierung und Leistung
C++
Rust
Bonus
- Go
――Der Stapel ist verbunden
- Verschieben ist möglich, da eine Stackmap vorhanden ist
--Arbeitsdiebstahl-Planer
- Die Standardstapelgröße beträgt 2 KB
- LLVM Coroutine
- Die Zuordnung kann sowohl auf dem Heap als auch auf dem Stack erfolgen
- C++ 20: Coroutines
- C++++++++++++++++++++++++++++++++++++
Andere