西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)編程開(kāi)發(fā)其它知識(shí) → 淺談多線(xiàn)程編程設(shè)計(jì)在程序開(kāi)發(fā)中的濫用

淺談多線(xiàn)程編程設(shè)計(jì)在程序開(kāi)發(fā)中的濫用

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:本站整理時(shí)間:2010/11/29 14:09:47字體大。A-A+

作者:佚名點(diǎn)擊:57次評(píng)論:0次標(biāo)簽: 線(xiàn)程 模塊 事件 消息隊(duì)列

  • 類(lèi)型:編程輔助大小:1.8M語(yǔ)言:英文 評(píng)分:6.0
  • 標(biāo)簽:
立即下載

通過(guò)合理創(chuàng)建任務(wù)(或線(xiàn)程)的方式,可以有效地提高軟件設(shè)計(jì)的模塊性。通過(guò)讓一個(gè)任務(wù)關(guān)注于某一類(lèi)事務(wù),有助于簡(jiǎn)化任務(wù)體函數(shù)的實(shí)現(xiàn),以及提高程序的可維護(hù)性。另外,多任務(wù)在不少情形下,將提高系統(tǒng)的運(yùn)行效率,因?yàn)橐粋(gè)任務(wù)在等待所需資源時(shí),另一個(gè)任務(wù)可以利用處理器做更多的事。盡管多任務(wù)有它的好處,但使用多任務(wù)的“度”很重要。就作者的觀察,多任務(wù)設(shè)計(jì)方法大有被濫用之勢(shì),乃至有的工程師習(xí)慣于一做設(shè)計(jì)就想到運(yùn)用多任務(wù)。出現(xiàn)這種狀況的原因,是因?yàn)闆](méi)有意識(shí)到多任務(wù)設(shè)計(jì)所帶來(lái)的問(wèn)題。

運(yùn)用多任務(wù)的設(shè)計(jì)方法,往往需要使用到任務(wù)同步的方法(互斥鎖、信號(hào)量、事件和消息隊(duì)列等),以保證多個(gè)任務(wù)有序地協(xié)同工作,以便避免出現(xiàn)競(jìng)爭(zhēng)問(wèn)題。但是,使用任務(wù)同步的方法并不是每個(gè)人都很擅長(zhǎng),乃至即使覺(jué)得自己很擅長(zhǎng),也很容易一糊涂就設(shè)計(jì)出存在競(jìng)爭(zhēng)問(wèn)題的代碼。再則,對(duì)于大型項(xiàng)目,由于代碼量的急劇增長(zhǎng),多任務(wù)所帶來(lái)的競(jìng)爭(zhēng)問(wèn)題更加不容易被發(fā)現(xiàn),一旦發(fā)生問(wèn)題就相對(duì)嚴(yán)重,而且不容易查錯(cuò)。

任務(wù)數(shù)量使用得過(guò)多,所帶來(lái)的另一個(gè)問(wèn)題是,因?yàn)槎鄠(gè)任務(wù)的存在,將帶來(lái)更多的任務(wù)切換。也因?yàn)槿蝿?wù)過(guò)多,而使得任務(wù)之間的通訊開(kāi)銷(xiāo)更大?偟膩(lái)說(shuō)是,有可能造成系統(tǒng)性能問(wèn)題。

作者也經(jīng)歷了從大量使用多任務(wù)設(shè)計(jì)到回歸避免使用多任務(wù)的成長(zhǎng)歷程,也明白在很多情形下,采用多任務(wù)設(shè)計(jì)的沖動(dòng)源于賣(mài)弄自己具備多任務(wù)的編程能力,以及愧疚于不采用多任務(wù)會(huì)造成系統(tǒng)性能問(wèn)題。其實(shí),一旦我們冷靜下來(lái)思考多任務(wù)設(shè)計(jì)時(shí)會(huì)發(fā)現(xiàn),自認(rèn)為多任務(wù)所帶來(lái)的好處,在系統(tǒng)中很可能并不是關(guān)鍵。另外,我們也很有可能沒(méi)有考慮采用多任務(wù)設(shè)計(jì)所帶來(lái)的不良副作用。

從用戶(hù)的體驗(yàn)來(lái)看,一個(gè)軟件產(chǎn)品最終必須具備良好的魯棒性,即穩(wěn)定。否則,無(wú)論多么好的功能特性,產(chǎn)品最終都將被用戶(hù)給拋棄。因此,軟件在開(kāi)發(fā)活動(dòng)中的主旨之一,應(yīng)是采用容易獲得高質(zhì)量的方法,而不是運(yùn)用更多的“高科技”。這種策略,允許適當(dāng)?shù)亟档蛯?duì)團(tuán)隊(duì)能力的要求,畢竟,要獲得一個(gè)能力都非常強(qiáng)的團(tuán)隊(duì)不是一件易事。

作者曾在一個(gè)項(xiàng)目中,開(kāi)發(fā)出了一個(gè)運(yùn)行于Linux操作系統(tǒng)之上的、基于TCP套節(jié)字的網(wǎng)絡(luò)通訊框架,采用的是單線(xiàn)程的設(shè)計(jì)思想。這個(gè)框架通過(guò)采用select()函數(shù),可以處理多個(gè)套接字的建鏈和通訊。在設(shè)計(jì)的過(guò)程中,由衷地感嘆采用單線(xiàn)程的方式大大地簡(jiǎn)化了設(shè)計(jì)和調(diào)試工作。當(dāng)作者將這一設(shè)計(jì)思路與一些同事交流時(shí),他們所表現(xiàn)出來(lái)的不理解卻大相徑庭。因?yàn)樵谒麄兛磥?lái),套接字通訊無(wú)論如何也得考慮用多線(xiàn)程的設(shè)計(jì)方法。有一點(diǎn)需要交代一下,作者采用單線(xiàn)程的設(shè)計(jì)方法,也是基于應(yīng)用場(chǎng)景并不存在大負(fù)荷的通訊數(shù)據(jù)。

無(wú)論如何,當(dāng)我們考慮運(yùn)用多任務(wù)設(shè)計(jì)時(shí),靜下心來(lái)思考一下它所帶來(lái)的利與弊,有助于我們克服魔鬼般的沖動(dòng)。一旦考慮清楚了應(yīng)當(dāng)采用多任務(wù)設(shè)計(jì),那還是應(yīng)當(dāng)勇往直前。

最后,即使是使用更少的任務(wù),也并不妨礙軟件的模塊化設(shè)計(jì)。因?yàn)橥ㄟ^(guò)設(shè)計(jì),完全可以實(shí)現(xiàn)模塊與任務(wù)相分離,也就是即使不采用多任務(wù),同樣可以獲得良好的軟件模塊化。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀圍觀
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)