[GO] Résumé de l'implémentation de la coroutine empilée
Je l'ai vérifié plusieurs fois et j'étais fatigué, je vais donc le résumer.
Coroutines
C
- libcoro
Système --ʻUcontext.h`
--Double licence de GPL et Permissive (?)
- coroutine
Système --ʻUcontext.h`
- Similaire à libcoro
- libaco
- Vitesse d'explosion (voir référence)
- Uniquement X86 pris en charge (à partir du 19 novembre 2018)
- libwire
--Avec des utilitaires pour IO et la synchronisation
--Base Libcoro
C++
Rust
- May
- Battery included
--Bibliothèque ci-dessous: generator-rs
--Seul x86 est pris en charge (à partir du 19 novembre 2018)
- "Don't exceed the coroutine stack. It will trigger undefined behavior."
- coroutine-rs
--Utilisez le cadavre de libgreen
- Ci-dessous, context-rs
Context switch
C
- ucontext.h
- Technologie ancienne
--Je m'inquiète pour la mise en œuvre et les performances
C++
Rust
prime
- Go
――La pile est connectée
- Le déplacement est possible car il y a un Stackmap
- Planificateur de vol de travail
- La taille de la pile par défaut est de 2 Ko
- LLVM Coroutine
- L'allocation peut être effectuée à la fois sur le tas et sur la pile
- C++ 20: Coroutines
- C++++++++++++++++++++++++++++++++++++
Autre