国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

查看: 2765|回復(fù): 0
打印 上一主題 下一主題

利用C++語(yǔ)言設(shè)計(jì)可擴(kuò)展線程池

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2014-4-11 01:40:34 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
關(guān)鍵詞: c語(yǔ)言 , c++
  摘要:在各種業(yè)務(wù)解決方案的設(shè)計(jì)中,服務(wù)器處理任務(wù)的效率是衡量方案優(yōu)劣的一個(gè)重要標(biāo)準(zhǔn)。使用多線程技術(shù)并發(fā)處理任務(wù)是提高服務(wù)器效率的一個(gè)主要手段。但是頻繁的線程創(chuàng)建、銷毀和任務(wù)的分配也會(huì)降低系統(tǒng)效率。本文設(shè)計(jì)了一個(gè)通用的線程池,根據(jù)不同服務(wù)器所處理的任務(wù)的特點(diǎn),可以設(shè)置對(duì)應(yīng)的線程池參數(shù),最大幅度的提高系統(tǒng)性能。
  關(guān)鍵字:線程池多線程任務(wù)虛函數(shù)異常
  概述
  在各種業(yè)務(wù)解決方案的設(shè)計(jì)過(guò)程中,服務(wù)器處理任務(wù)的效率往往決定了方案的成敗。多線程處理任務(wù)是提高服務(wù)器效率的主要手段,它提高了對(duì)服務(wù)器資源的利用,使得任務(wù)可以并發(fā)處理。但如果服務(wù)器處理的任務(wù)的特點(diǎn)是輕量級(jí)、頻率高,那么線程的創(chuàng)建與銷毀會(huì)非常頻繁,而系統(tǒng)用于處理線程的創(chuàng)建與銷毀的開(kāi)銷會(huì)占相當(dāng)大的比重,反而降低了系統(tǒng)的效率。通過(guò)線程池技術(shù),可以減少頻繁的線程的創(chuàng)建與銷毀對(duì)系統(tǒng)性能的影響。
  線程池是預(yù)先創(chuàng)建線程的一種技術(shù)。線程池在還沒(méi)有任務(wù)到來(lái)之前,創(chuàng)建一定數(shù)量(N1)的線程,放入空閑隊(duì)列中。這些線程都是處于阻塞(Suspended)狀態(tài),不消耗CPU,但占用較小的內(nèi)存空間。當(dāng)任務(wù)到來(lái)后,緩沖池選擇一個(gè)空閑線程,把任務(wù)傳入此線程中運(yùn)行。當(dāng)N1個(gè)線程都在處理任務(wù)后,緩沖池自動(dòng)創(chuàng)建一定數(shù)量的新線程,用于處理更多的任務(wù)。當(dāng)系統(tǒng)比較空閑時(shí),大部分線程都一直處于暫停狀態(tài),線程池自動(dòng)銷毀一部分線程,回收系統(tǒng)資源。
  通用線程緩沖池的設(shè)計(jì),不僅要實(shí)現(xiàn)上述功能,還要考慮此設(shè)計(jì)的可移植性,減少重復(fù)開(kāi)發(fā)。設(shè)計(jì)中需要考慮的重點(diǎn)是:
任務(wù)對(duì)象的通用性;線程創(chuàng)建和銷毀策略;任務(wù)的分配策略。  分析與設(shè)計(jì)
  1、任務(wù)對(duì)象的通用性
  不同的業(yè)務(wù)解決方案有各自獨(dú)特的任務(wù)處理方法,任務(wù)的劃分上也就千差萬(wàn)別。為了使得在處理任務(wù)對(duì)象的時(shí)候達(dá)到一定程度的通用性,任務(wù)對(duì)象的設(shè)計(jì)上必須與實(shí)際任務(wù)的處理邏輯完全無(wú)關(guān)。從任務(wù)執(zhí)行的角度看,任務(wù)不過(guò)是處理流程的一次或者多次執(zhí)行的過(guò)程,可以這樣來(lái)定義任務(wù)接口:
class Task
{
public:
Task();
virtual ~Task();
virtual bool run() = 0;
};
  Task類是所有任務(wù)類的基類,其中的純虛函數(shù)run()是任務(wù)流程的入口,工作線程在處理任務(wù)的時(shí)候就從此處開(kāi)始執(zhí)行任務(wù)的處理流程。設(shè)計(jì)一個(gè)新的任務(wù)時(shí),只需要繼承Task接口,新的任務(wù)就可以放入線程池中執(zhí)行。
  任務(wù)的創(chuàng)建、執(zhí)行和銷毀這樣來(lái)設(shè)計(jì):
  (1)任務(wù)在其需要的時(shí)候才創(chuàng)建。任務(wù)的創(chuàng)建通過(guò)new操作,動(dòng)態(tài)創(chuàng)建具體的任務(wù)對(duì)象,然后傳入線程池,由線程池自動(dòng)分配線程來(lái)執(zhí)行此任務(wù)。
  (2)任務(wù)是否執(zhí)行完畢由其自身來(lái)決定。一個(gè)未知任務(wù)什么時(shí)候執(zhí)行完畢是不可能預(yù)測(cè)的,必須任務(wù)本身來(lái)決定。這個(gè)策略通過(guò),Task::run()的返回值來(lái)實(shí)現(xiàn)。當(dāng)工作線程執(zhí)行一次任務(wù)時(shí),如果返回值為true,表示任務(wù)執(zhí)行完畢,就用delete操作銷毀此任務(wù);如果返回值為false,表示任務(wù)需要執(zhí)行的工作并未完成,繼續(xù)執(zhí)行此任務(wù)。
  這樣的策略,使得在設(shè)計(jì)新的任務(wù)處理流程的時(shí)候,不需要過(guò)多的關(guān)心任務(wù)的接口規(guī)范,只需要在新任務(wù)類的構(gòu)造函數(shù)中初始化各種資源,在新任務(wù)類的析構(gòu)函數(shù)中回收資源,在run()方法中實(shí)現(xiàn)主要的處理邏輯,那么新的任務(wù)類即可在線程池中執(zhí)行。
  2、線程的創(chuàng)建與銷毀
  線程緩沖池中的維持的線程數(shù)量應(yīng)該按照任務(wù)處理的需求來(lái)定。
  在緩沖池剛剛建立時(shí),線程池中有一定數(shù)量(N1)的已創(chuàng)建好的線程,這樣可以使得新任務(wù)可以及時(shí)的得到執(zhí)行。比如,某客戶端在向服務(wù)器發(fā)送登陸請(qǐng)求的時(shí)候,這樣一個(gè)請(qǐng)求使得服務(wù)器通常需要?jiǎng)?chuàng)建好幾個(gè)相互有關(guān)聯(lián)的任務(wù)。也就是說(shuō),客戶端與服務(wù)器端的一次交互,通常會(huì)產(chǎn)生一定數(shù)量的任務(wù)。根據(jù)一個(gè)服務(wù)器所處理的業(yè)務(wù),估計(jì)出平均情況下,一次業(yè)務(wù)產(chǎn)生的任務(wù)數(shù)量N2。那么N1應(yīng)該是N2的整數(shù)倍,N1=N2×n1,減少由于線程不夠而再創(chuàng)建線程的概率,才能使得服務(wù)器在業(yè)務(wù)處理初期最為高效。
  在線程緩沖池中的所有線程都處于繁忙狀態(tài)的時(shí)候,線程池就會(huì)創(chuàng)建新的線程,設(shè)創(chuàng)建N3個(gè)。由以上分析,為了減少由于線程不夠而再創(chuàng)建線程的概率,N3也應(yīng)該是N2的整數(shù)倍,N3=N2×n2。
  當(dāng)服務(wù)器業(yè)務(wù)減少,出現(xiàn)大量線程閑置的情況,就應(yīng)該銷毀一部分線程。很顯然,這里應(yīng)該使用超時(shí)策略,當(dāng)某些線程在超過(guò)時(shí)間T仍然處于閑置狀態(tài),就銷毀一部分空閑線程。設(shè)銷毀N4個(gè)空閑線程,為了減少由于線程不夠而再創(chuàng)建線程的概率,N4也應(yīng)該是N2的整數(shù)倍,N4=N2×n3。當(dāng)然,為了使得新任務(wù)及時(shí)得到處理,即使服務(wù)器一直處于空閑,也應(yīng)該保留N1個(gè)線程。

本版積分規(guī)則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 2021国产麻豆剧 | 在线免费日韩 | 日本免费黄网 | 日韩男人天堂 | 国产免费a| 婷婷成人亚洲 | 亚洲欧美另类在线 | 一区二区视频网 | a毛片全部播放免费视频完整18 | 日本一区视频在线观看 | 国产欧美视频一区二区三区 | 亚洲日本中文字幕在线 | 在线观看精品国产 | 三区在线视频 | 魏璎珞电视剧免费观看 | 精品自拍视频 | 欧美操操网 | 午夜a级理论片在线播放一级 | 99免费在线观看 | 日韩在线播放中文字幕 | 手机午夜看片 | 欧美在线网址 | www.99精品视频在线播放 | 国产福利在线免费观看 | 青青国产成人久久91网站站 | 国产自制一区 | 国内毛片视频 | 日本精品高清一区二区不卡 | 精品久久久噜噜噜久久7 | 日韩黑丝| 国产欧美日韩精品高清二区综合区 | 伊人久久综在合线亚洲91 | 一区二区三区高清在线观看 | 四虎免费大片aⅴ入口 | 免费观看四虎精品成人 | 天天夜日日日日碰日日摸 | 中文天堂最新版www在线观看 | 日韩精品视频在线免费观看 | 欧美在线看欧美视频免费网站 | 国内精品91久久久久 | 四虎精品影院4hutv四虎 |