Vykopnu jeden nápad:
Jenom tak intuitivne, bez jakyhokoli researche si rikam, jestli by se nedal udelat nejaky jakoby "sdileny stack" - ze by se pouzily treba kontinuace bez moznosti returnu, takze by se nemusel udrzovat stack a kazda kontinuace by dostala cely potrebny kontext (stav) a pak by existovala treba nejaka globalni tabulka vsech kontinuaci, ze ktere by se pri kazdem kroku jenom vybrala nahodne kontinuace, ktera ja pripravena bezet. Cili misto spousty individualnich stacku by byla jedna globalni tabulka, ktera by pamet vyuzila lip a stacilo by kontrolovat, ze nepretece ona. Stav by mohl byt bud alokovany na halde, nebo by byla treba svrchu omezena jeho maximalni velikost, aby polozky v tabulce mely fixni velikost.
Prakticky by se teda program musel rozdělit na části, které by vždycky začínaly nějaký čekáním na něco - typicky na zprávu v kanálu. Z každé části by se pak udělaly funkce (callbacky). Každý callback by musel všechna data, která potřebuje, dostávat jako argumenty. "Globální stack" by potom spočíval v seznamu callbacků spolu s jejich argumenty a podmínkami, za kterých můžou běžet. Scheduler by pak prostě jenom z tabulky náhodně vybral callback, u nehož jsou podmínky splněné, a spustil ho.
Prostě princip podobný futures, resp. async/await, ale s jinou motivací a ruční implementací.