最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

手把手教你寫Linux線程池

2023-03-19 15:48 作者:Linux兵工廠  | 我要投稿
  1. 線程池

    顧名思義,存儲線程的池子。線程池是線程的一種使用模式。在平常業(yè)務(wù)開發(fā)中常規(guī)的邏輯是遇到任務(wù)然后創(chuàng)建線程去執(zhí)行。但是線程的頻繁創(chuàng)建就類似于內(nèi)存的頻繁申請和銷毀,會給操作系統(tǒng)帶來大的壓力,進而影響整體的性能。所以我們一次申請好一定數(shù)量而定線程,然后將線程的管理操作交給線程池,就避免了在短時間內(nèi)不斷創(chuàng)建與銷毀線程的代價,線程池不但能夠保證內(nèi)核的充分利用,還能防止過分調(diào)度,并根據(jù)實際業(yè)務(wù)情況進行修改。

  2. 使用線程池的好處

    - 任務(wù)到來后立馬就有線程去執(zhí)行任務(wù),節(jié)省了創(chuàng)建線程的時間

    - 防止服務(wù)器線程過多導(dǎo)致的系統(tǒng)過載問題

    - 相對于進程池,線程池資源占用較少,但是健壯性很差

    - 降低資源消耗,通過重用已經(jīng)創(chuàng)建的線程來降低線程創(chuàng)建和銷毀的消耗

    - 提高線程的可管理性,線程池可以統(tǒng)一管理、分配、調(diào)優(yōu)和監(jiān)控其中的線程

  3. 什么情況下使用線程池

    - 需要大量的線程來完成任務(wù),且完成任務(wù)的時間比較短

    - 對性能要求苛刻的應(yīng)用

    - 接收突發(fā)性的大量請求,但不至于使服務(wù)器因此產(chǎn)生大量線程的應(yīng)用

  4. 線程不是越多越好

    線程的越多,可能會導(dǎo)致線程切換越頻繁, 進而還有可能導(dǎo)致程序運行效率降低。多線程程序的運行效率, 是一個正態(tài)分布的結(jié)果, 線程數(shù)量從1開始增加, 隨著線程數(shù)量的增加, 程序的運行效率逐漸變高, 直到線程數(shù)量達到一個臨界值, 再次增加線程數(shù)量時, 程序的運行效率會減小(主要是由于頻繁的線程切換影響線程運行效率)。

    - 線程若不限制數(shù)量的創(chuàng)建,線程創(chuàng)建過多,資源耗盡,有程序崩潰的風(fēng)險

    - 處理一個短時間任務(wù)時,線程會頻繁創(chuàng)建和銷毀,占用系統(tǒng)資源,降低系統(tǒng)性能

  5. Linux如何實現(xiàn)一個線程池

    - 每個任務(wù)在放入任務(wù)隊列時設(shè)置好需要處理的數(shù)據(jù)和處理函數(shù)

    - 線程池中的線程負責(zé)從任務(wù)隊列當中獲取任務(wù),并進行處理


線程池

6. 代碼實現(xiàn)過程

- 創(chuàng)建一個任務(wù)類CTask,可以設(shè)置處理任務(wù)的回調(diào)func以及需要處理的數(shù)據(jù)m_data

- 創(chuàng)建一個線程池類CThreadPool,成員變量有設(shè)置線程池中線程的最大數(shù)量thr_max,任務(wù)緩沖隊列m_queue,互斥量m_mutex,用于實現(xiàn)對緩沖隊列的安全性,條件變量m_cond,用于實現(xiàn)線程池中線程的同步

7.運行結(jié)果

- 10個任務(wù)被5個線程分別處理完

線程池

8.小結(jié)

至此,一個簡單的線程池實例就完成了。實際工作中我們可以根據(jù)實際的業(yè)務(wù)量來初始化線程池中線程的個數(shù),并根據(jù)任務(wù)量的多少動態(tài)的增加或減少線程池中的線程。好了,現(xiàn)在讓我們行動起來吧,自己編寫一個線程池。


如果需要線程池源碼,關(guān)注Linux兵工廠,回復(fù)1024獲取,并有大量Linux硬核學(xué)習(xí)資料贈送。


手把手教你寫Linux線程池的評論 (共 條)

分享到微博請遵守國家法律
宜阳县| 安溪县| 昌吉市| 桑植县| 仁怀市| 民乐县| 奉节县| 漳州市| 邢台县| 江达县| 卫辉市| 苏尼特左旗| 洛阳市| 吕梁市| 都匀市| 甘南县| 金塔县| 济阳县| 屏边| 宜昌市| 平陆县| 德阳市| 万荣县| 海南省| 通城县| 高雄市| 鲁山县| 镇平县| 清原| 滁州市| 昭平县| 南投市| 连云港市| 拉孜县| 浑源县| 永定县| 中江县| 莱芜市| 津市市| 天全县| 普格县|