Teď budu trošku offtopic, ale zajualo mne programování s vícero zásobníky. Nejde mi teď o klasická vlákna, procesy, nebo volání jádra, ale čistě o programovací techniky založené na tom, že kontext výpočtu mám v separátním zásobníku. Normálně o tom mnoho lidí neví, když se zeptám tady po okolí, kde se to programátory jen hemží, tak se ozvou jen pythoňáci, a to jen proto, že používají generátory. Céčkaři ani javascripťáci budou koukat jako puk. (A přitom podporu na to najdeme jak v Linuxu tak ve Windows ... ale je potřeba jít až na úroveň low-level knihoven).
Hmm, ale teď tedy moc nechápu, na co by to měli znát javascripťáci, ti jsou snad od takových detailů hodně odstíněni ne? Teda znát by to mohli ti starší, u mladších - těch co se živý JavaScriptem - pochybuji, že vůbec chápou jak pracuje takový CPU :-)
Céčkaři ve skutečnosti taky klasického zásobníku moc neužijí, tam se používají zásobníkové rámce, což je sice na jednu stranu zásobník, na stranu druhou ovšem využívaný poněkud neortodoxně přímým přístupem s relativním adresováním (nahoru od BP jsou parametry, dolů od BP lokální proměnné - nebo naopak, podle toho, jak kdo chápe směr "nahoru" a "dolů" :-) Nebo máš na mysli něco na způsob alloca()?
Nejde mi o nic takového. Jde mi o kontext vykonávaní programu. Stav programu je často definován pozicí v programu a callstackem, tedy seznamem volajících podprogramů.
A teď si představte, že můžete mezi těmito callstacky přepínat, ale nejde o žádnou emulaci vláken. Jde o programátorskou techniku, kdy třeba napíšete iterátor vy procházíte normálně třeba v cyklu prvky nějaké kolekce, a přitom ten iterátor ty prvky prochází rekuzivně ve vlastním callstacku a při každým next() se přejde z jednoho callstacku do druhého a zase zpět.
Prostě jako by to byly dvě vlákna, akorát synchroně bez nutnosti je zastavovat a synchronizovat.