C++ 多線程編程

在開發(fā)C++程序時,一般在吞吐量凸郑、并發(fā)裳食、實時性上有較高的要求。設(shè)計C++程序時芙沥,總結(jié)起來可以從如下幾點提高效率:

● l 并發(fā)

● l 異步

● l 緩存

下面將我平常工作中遇到一些問題例舉一二诲祸,其設(shè)計思想無非以上三點。

1任務(wù)隊列

1.1 以生產(chǎn)者-消費者模型設(shè)計任務(wù)隊列

生產(chǎn)者-消費者模型是人們非常熟悉的模型而昨,比如在某個服務(wù)器程序中救氯,當(dāng)User數(shù)據(jù)被邏輯模塊修改后,就產(chǎn)生一個更新數(shù)據(jù)庫的任務(wù)(produce)配紫,投遞給IO模塊任務(wù)隊列径密,IO模塊從任務(wù)隊列中取出任務(wù)執(zhí)行sql操作(consume)。

設(shè)計通用的任務(wù)隊列躺孝,示例代碼如下:

詳細(xì)實現(xiàn)可參見:

推薦C語言C++學(xué)習(xí)交流群:231662552

務(wù)隊列使用技巧

1.2.1 IO 與 邏輯分離

比如網(wǎng)絡(luò)游戲服務(wù)器程序中享扔,網(wǎng)絡(luò)模塊收到消息包,投遞給邏輯層后立即返回植袍,繼續(xù)接受下一個消息包惧眠。邏輯線程在一個沒有io操作的環(huán)境下運行,以保障實時性于个。示例:

推薦C語言C++學(xué)習(xí)交流群:231662552??

注意氛魁,此模式下為單任務(wù)隊列,每個任務(wù)隊列單線程厅篓。

1.2.2 并行流水線

上面的只是完成了io 和 cpu運算的并行秀存,而cpu中邏輯操作是串行的。在某些場合羽氮,cpu邏輯運算部分也可實現(xiàn)并行或链,如游戲中用戶A種菜和B種菜兩種操作是完全可以并行的,因為兩個操作沒有共享數(shù)據(jù)档押。最簡單的方式是A澳盐、B相關(guān)的操作被分配到不同的任務(wù)隊列中。示例如下:

推薦C語言C++學(xué)習(xí)交流群:231662552??? ?
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末令宿,一起剝皮案震驚了整個濱河市叼耙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粒没,老刑警劉巖筛婉,帶你破解...
    沈念sama閱讀 222,464評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異癞松,居然都是意外死亡爽撒,警方通過查閱死者的電腦和手機(jī)冕碟,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,033評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來匆浙,“玉大人,你說我怎么就攤上這事厕妖∈啄幔” “怎么了?”我有些...
    開封第一講書人閱讀 169,078評論 0 362
  • 文/不壞的土叔 我叫張陵言秸,是天一觀的道長软能。 經(jīng)常有香客問我,道長举畸,這世上最難降的妖魔是什么查排? 我笑而不...
    開封第一講書人閱讀 59,979評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮抄沮,結(jié)果婚禮上跋核,老公的妹妹穿的比我還像新娘。我一直安慰自己叛买,他們只是感情好砂代,可當(dāng)我...
    茶點故事閱讀 69,001評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著率挣,像睡著了一般刻伊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上椒功,一...
    開封第一講書人閱讀 52,584評論 1 312
  • 那天捶箱,我揣著相機(jī)與錄音,去河邊找鬼动漾。 笑死丁屎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谦炬。 我是一名探鬼主播悦屏,決...
    沈念sama閱讀 41,085評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼键思!你這毒婦竟也來了础爬?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,023評論 0 277
  • 序言:老撾萬榮一對情侶失蹤吼鳞,失蹤者是張志新(化名)和其女友劉穎看蚜,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體赔桌,經(jīng)...
    沈念sama閱讀 46,555評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡供炎,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,626評論 3 342
  • 正文 我和宋清朗相戀三年渴逻,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片音诫。...
    茶點故事閱讀 40,769評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡惨奕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出竭钝,到底是詐尸還是另有隱情梨撞,我是刑警寧澤,帶...
    沈念sama閱讀 36,439評論 5 351
  • 正文 年R本政府宣布香罐,位于F島的核電站卧波,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏庇茫。R本人自食惡果不足惜港粱,卻給世界環(huán)境...
    茶點故事閱讀 42,115評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旦签。 院中可真熱鬧查坪,春花似錦、人聲如沸宁炫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,601評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽淋淀。三九已至遥昧,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朵纷,已是汗流浹背炭臭。 一陣腳步聲響...
    開封第一講書人閱讀 33,702評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留袍辞,地道東北人鞋仍。 一個月前我還...
    沈念sama閱讀 49,191評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像搅吁,于是被迫代替她去往敵國和親威创。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,781評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 1. 基礎(chǔ)知識 1.1谎懦、 基本概念肚豺、 功能 馮諾伊曼體系結(jié)構(gòu)1、計算機(jī)處理的數(shù)據(jù)和指令一律用二進(jìn)制數(shù)表示2界拦、順序執(zhí)...
    yunpiao閱讀 5,337評論 1 22
  • 必備的理論基礎(chǔ) 1.操作系統(tǒng)作用: 隱藏丑陋復(fù)雜的硬件接口吸申,提供良好的抽象接口。 管理調(diào)度進(jìn)程,并將多個進(jìn)程對硬件...
    drfung閱讀 3,548評論 0 5
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 31,950評論 2 89
  • 19 1 01-李小嬌 今天是閱讀原創(chuàng)第一周截碴,我先從敘事性故事下手梳侨,因為相對簡單些。本周的計劃是周一《我的...
    小嬌閱讀閱讀 778評論 0 0
  • 從小學(xué)的時候就學(xué)過一篇課文《我要的是葫蘆》日丹,里面的道理很簡單走哺,我也記得很清楚: 事物與事物之間關(guān)系密切,不可為追求...
    感想心得閱讀 90評論 0 0