UNIX(多线程):21---线程池实现原理
線程池簡(jiǎn)介:
線程過(guò)多會(huì)帶來(lái)調(diào)度開(kāi)銷(xiāo),進(jìn)而影響緩存局部性和整體性能。
而線程池維護(hù)著多個(gè)線程,等待著監(jiān)督管理者分配可并發(fā)執(zhí)行的任務(wù)。這避免了在處理短時(shí)間任務(wù)時(shí)創(chuàng)建與銷(xiāo)毀線程的代價(jià)。線程池不僅能夠保證內(nèi)核的充分利用,還能防止過(guò)分調(diào)度。可用線程數(shù)量應(yīng)該取決于可用的并發(fā)處理器、處理器內(nèi)核、內(nèi)存、網(wǎng)絡(luò)sockets等的數(shù)量。
線程池主要應(yīng)用場(chǎng)景:
1、需要大量的線程來(lái)完成任務(wù),且完成任務(wù)的時(shí)間比較短。WEB服務(wù)器完成網(wǎng)頁(yè)請(qǐng)求這樣的任務(wù),使用線程池技術(shù)是非常合適的。因?yàn)閱蝹€(gè)任務(wù)小,而任務(wù)數(shù)量巨大,你可以想象一個(gè)熱門(mén)網(wǎng)站的點(diǎn)擊次數(shù)。但對(duì)于長(zhǎng)時(shí)間的任務(wù),比如一個(gè)Telnet連接請(qǐng)求,線程池的優(yōu)點(diǎn)就不明顯了。因?yàn)門(mén)elnet會(huì)話時(shí)間比線程的創(chuàng)建時(shí)間大多了。
2、對(duì)性能要求苛刻的應(yīng)用,比如要求服務(wù)器迅速響應(yīng)客戶(hù)請(qǐng)求。
3、接受突發(fā)性的大量請(qǐng)求,但不至于使服務(wù)器因此產(chǎn)生大量線程的應(yīng)用。突發(fā)性大量客戶(hù)請(qǐng)求,在沒(méi)有線程池情況下,將產(chǎn)生大量線程,雖然理論上大部分操作系統(tǒng)線程數(shù)目最大值不是問(wèn)題,短時(shí)間內(nèi)產(chǎn)生大量線程可能使內(nèi)存到達(dá)極限,并出現(xiàn)"OutOfMemory"的錯(cuò)誤。
線程池優(yōu)點(diǎn):
首先說(shuō)一下多線程的好處:多線程技術(shù)主要解決處理器單元內(nèi)多個(gè)線程執(zhí)行的問(wèn)題,它可以顯著減少處理器單元的閑置時(shí)間,增加處理器單元的吞吐能力。
我們知道應(yīng)用程序創(chuàng)建一個(gè)對(duì)象,然后銷(xiāo)毀對(duì)象是很耗費(fèi)資源的。創(chuàng)建線程,銷(xiāo)毀線程,也是如此。因此,我們就預(yù)先生成一些線程,等到我們使用的時(shí)候在進(jìn)行調(diào)度,
總結(jié)
以上是生活随笔為你收集整理的UNIX(多线程):21---线程池实现原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++:47---绝不重新定义继承而来的
- 下一篇: rabbitmq技术的一些感悟(二)