> > Dispatcher (server), ktery spousti nekolik tisic vlaken si vytvori > vlastni registracni strukturu metadat o kazdem z pustenych vlaken, > kteremu pri startu (pokud je to nutne) preda referenci na jeho zaznam. > Zde muze byt napriklad struktura semaforu, pripadne jineho > synchronizacniho "nastroje", ktery dane vlakno bude kontrolovat/ridit. > Takova konstrukce je plne zapouzdrena (objekt dispatcheru si managuje > sve ovecky, plus poskytuje interface k vlaknum pro sve okoli) a je > umoznena absolutni prenositelnost / zapouzdreni do slozitejsich > struktur aplikace. Nevidim zadnou potrebu, a uz vubec ne oduvodnenou, > pro existenci globalni promenne.
To je jedno z řešení, nicméně ne vždy šikovné. Proč by třeba bylo nutné vytvářet něco, co musí vědět o každém z vláken? Je opravdu nutné, aby synchronizační objekt vedl seznam všech vláken? A proč? Globální proměnné mají jednu obrovskou výhodu (tedy v Javě ne, ale v řadě jiných programovacích jazyků ano) - nemůže selhat jejich vytvoření. V řadě jazycích se mohu spolehnout na to, že globální proměnná zaručeně bude existovat a její vytvoření neskončí chybou. To mi dynamicky vytvořené objekty zajistit nemohou - vždy je tam riziko selhání typu "není dostatek paměti na alokaci", či "není dost místa na zásobníku". Pokud chci udělat nezbořitelnou aplikaci, kde opravdu hodně záleží na spolehlivosti - tahle vlastnost globálních proměnných není k zahození. A založit modul třeba obsluhy chyb na nezbořitelných globálních proměnných vůbec není od věci. Další obrovskou a neoddiskuvatelnou výhodou globálních proměnných je jejich efektivita. Neexistuje efektivnější a rychlejší přístup a práce s proměnnou, než je globální proměnná (a statická samozřejmě) - a v případě, kde rychlost je klíčová to nemusí být k zahození. Ona celá režie zapouzdření taky něco stojí - a mimo jiné i tu rychlost e efektivitu běhu celého programu. Není v programování nic horšího, než předsudky. Miloslav Ponkrác _______________________________________________ Python mailing list [email protected] http://www.py.cz/mailman/listinfo/python
