Kwo znachi "THREAD POOL"?

6 отговора 319 прегледа
#1

Kwo znachi "THREAD POOL"?

Nqkoi moje li da mi obqsni kwo tochno znachi THREAD POOL

Отговор
в отговор на Somebody #2

Re: Kwo znachi "THREAD POOL"?

Става въпрос за ActiveX EXE. Приеми, че при thread pool exe-to е стартирано веднъж, при всяко клиентско createobject на сървъра се създава нов обект. (но не се стартира отделна програма) При thread per object (multithread) при всяко createobject се стартира на сървъра отделно exe - без обща част, абсолютно независими. Не можеш примерно да броиш колко са обектите и т.н. - нямат обща част. При thread pool имат, но там заявките се изпълняват последователно и може малка краткотрайна заявка да чака много дълго изпълнението на предната.

Отговор
в отговор на Пaлячo #3

Re: Kwo znachi "THREAD POOL"?

това е един много частен случай на "thread pool". най-общо, това са определен брой тредове, създадени при пускането на програмата, които седят в някой семафор или селект и чакат да дойде някаква задача, която да изпълнят. така се подобрява бързодействието - спестява се времето засъздаване на тредове. Примера с ActiveX е един частен случай. друг пример, който мога да ти дам е Apache сървера - при пускането на сървера се създават Thread Pool с определен брой тредове, и когато дойде заявка за обсужване - тя се обработва от един от тези тредове, след което треда се освобождава (не се убива, а чака следващата заявка)

Отговор
в отговор на heh #4

Re: Kwo znachi "THREAD POOL"?

Абсолютно съм съгласен. Просто понякога е трудно да се обясни добре нещо, което по принцип ти е ясно. И аз знам, че обяснението ми не беше много добро, но.... Така е. Предположих, че Somebody прави сървърска програмка и говорих само за този случай с евентуалните подводни камъни с 1 thread. Още повече че при thread pool веднага следва и Max Threads.

Отговор
в отговор на Пaлячo #5

Re: Kwo znachi "THREAD POOL"?

Понякога е удобно *обекти*, които изискват много ресурси при създаването си, да бъдат предварително създавани и сложени във "pool". По-късно, at runtime, вече създаден обект се взема от този "pool" и по този начин се спестява бързодействие по време на изпълнение.

Добър аналог на това е "connection pooling", което е добър подход при Web UI / DataBase системи. Предварително, по време на стартиране на Application Server-a, се създава "pool" от конекции до базата данни и когато клиент от site-a разглежда страници, които изискват call до базата данни, се взима готова конекция от "pool"-a и по този начин се спестява ценното време за създаване на конекция, както и спестяване на сървърни ресурси at runtime. (много "програмисти" дори не осъзнават, колко ценен и скъп ресурс е една конекция до база данни, особено ако става дума за Oracle и SQL Server).

Цената на това удоволствие е повече заета памет и по голямо натоварване at startup на сервера.

Thread pooling е аналогичен. Предварително се създават threads, които се използват наготово, когато трябва.

Отговор
в отговор на Guru. #6

Re: Kwo znachi "THREAD POOL"?

Mnogo 10x!

Отговор
в отговор на Somebody #7

Re: Kwo znachi "THREAD POOL"?

Thread poolinga e mnogo efektiven ot gledna tochka na resursi vs. burzodeistvie.
Nai obsto thread poola e nabor ot gotovi creatnati threadove (fixiran broi) koito obache sa spiasti t.e. namirat se v sustoianie pri koeto kogato ne se polzvat harchat malko resursi, ne se schedulvat i t.n. Edin (ili poveche ako e neobhodimo) ot ia threadove se subujda ot OS kogato nastupi niakakvo subitie i go obrabotva. Nai efektivnia nachin da se realizira thread pool pod Windows e s io completition ports. Za poveche info po completition ports vij msdn. Primerno tovhno taka raboti IIS ima thread pool s worker threads i kogato doite request nikoi thread ot poola se subujda i go obrabotva i sled tova otiva obratno v pool-a.

Отговор