Z toho tretiho odkazu, kde se porovnavaji koprogramy v Lua a generatory Pythonu mi neni uplne jasny ten vnitrni rozdil mezi nimi. Python (resp. stackless Python) se chlubi tim, ze vlakna nemaji (?) vlastni zasobnik, ale asi se tim mysli, ze nemaji spolecny oddeleny ceckovy zasobnik (stack frame), protoze lokalni promenne prece musi byt oddelene od hlavniho vlakna ne? V Lua mi to pripadne jasne, tam je to reseno knihovni funkci, ktera vlastni zasobnik pro koprogram vytvori pomoci pole (ceho taky jineho?).
Dobre, ale to pojmenovani tedy musi byt odvozeno i od threadu, ve kterem jsou promenne definovany ne? Predpokladejme, ze mam jednu funkci s lokalni promennou "foo", kterou spustim ve 100 threadech. Takze se vytvori 100 slovniku, kazdy s jednou polozkou s klicem "foo"?
Jak na to koukám, tak to vypadá, že tam figurují 2 kontejnery: "locals" a "fast locals". Zatímco "locals" fungují jako klasický slovník, "fast locals" jsou uloženy sekvenčně. Pokud vytvořím proměnnou pomocí exec, dostane se do locals a dá se do ní psát pomocí currentframe().f_locals, v případě, že proměnnou vytvořím "normálně", není to možné. Takže jsem to moc zjednodušil, sorry.