<div dir="ltr">Diky za reakci. Je pravda, ze takovy model jsem nebral v uvahu (ikdyz ho znam). V konecnem dusledku mi mozna prijde slozitejsi na vyladeni nez implementovat tu asynchronni verzi a pritom neprinasi zadny benefit navic.<br>
<br>Samozrejme pokud neni omezenim pocet paralelne otevrenych socketu. Zkousel jsem udelat cca 1500 socket pripojeni na servery (z bezne klientske stanice) a zadneho zatizeni jsem si nevsimnul. Kazdopadne netvrdim, ze to je nejcistsi reseni...<br>
<br>Marek<br><br><div class="gmail_quote">2008/8/2 superman <span dir="ltr">&lt;<a href="mailto:feed@centrum.cz">feed@centrum.cz</a>&gt;</span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
</div>Ano, přehlédnul. Tento problém se řeší velmi často, a je na něj krásné<br>
standardizované řešení. To řešení spočívá v tom, že se určí maximální<br>
počet běžících threadů - řekněme třeba 50. Pak se vytvoří tzv. thread<br>
pool, tedy objekt, který spustí 50 threadů a drží je v pozastaveném<br>
stavu. Všechny potřebné úkoly se řadí do fronty operací, které pak<br>
přebírá thread pool a přiřazuje jim jednotlivé thready. Tedy pokud je<br>
potřebných operací méně, než max. počet threadů, některé thready spí a<br>
zbylé vykonávají operace. Pokud je operací více, než threadů, pak<br>
všechny thready vykonávají operace až do max. počtu, tedy v tomto<br>
případě do 50 a zbylé čekají ve frontě. Jakmile jakákoli operace skončí,<br>
volný thread vybere z fronty další operaci a začne jí vykonávat.<br>
<br>
Tímto dosáhnete max. rychlosti a vysokého výkonu. Za prvé se zbavíte<br>
režie vytváření a rušení threadu - všech 50 threadů vytvoříte najednou a<br>
stále existují v thread poolu. Za druhé - příliš velký počet threadů<br>
naráz je neefektivní a režie operačního systémů při přepínání kontextu<br>
obrovského množství threadů sežere značnou část výkonu. Takže při<br>
rozumně zvoleném počtu threadů probíhají operace nejrychlejší možnou<br>
rychlostí - vyšší, než kdyby bylo threadů méně, nebo více. Za třetí -<br>
snažší synchronizace thread díky tomu, že je máte najednou pod kontrolou<br>
v jednom objektu - synchronizační akce bývají výrazně zjednodušeny.<br>
<br>
Psal bych víc, ale pro základní představu to stačí.<br>
<br>
Miloslav Ponkrác<br>
<br>
<br>
<br>
<br>
_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@py.cz">Python@py.cz</a><br>
<a href="http://www.py.cz/mailman/listinfo/python" target="_blank">http://www.py.cz/mailman/listinfo/python</a><br>
</blockquote></div><br></div>