新聞中心
多線程程序和單進(jìn)程程序中都有使用,在網(wǎng)絡(luò)服務(wù)中都有使用。多線程程序主要用于同步的處理一些請(qǐng)求,為了在同一時(shí)間處理較多的請(qǐng)求。一般采取線程池的策略,一個(gè)主線程來(lái)分配請(qǐng)求。

創(chuàng)新互聯(lián)建站主營(yíng)城陽(yáng)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP軟件開(kāi)發(fā),城陽(yáng)h5微信小程序搭建,城陽(yáng)網(wǎng)站營(yíng)銷(xiāo)推廣歡迎城陽(yáng)等地區(qū)企業(yè)咨詢(xún)
(一)常見(jiàn)的進(jìn)程模型:
(1)多線程模型
這種模式固定線程數(shù)量,吞吐量是接近每個(gè)線程的吞吐量*線程數(shù)。不具有伸縮性,伸縮性不強(qiáng),在高負(fù)載下能力有很大限制。對(duì)于負(fù)載不大的情況下的同步數(shù)據(jù)訪問(wèn)應(yīng)用還是比較廣泛的。
(2)多線程模型二
這種模型是一個(gè)線程負(fù)責(zé)調(diào)度任務(wù)到不同的線程,通常維護(hù)一個(gè)線程池,線程池的線程數(shù)量可以伸縮,由調(diào)度線程決定?;貓?bào)也通過(guò)調(diào)度線程來(lái)處理,線程與線程之間通過(guò)共享內(nèi)存來(lái)獲取其他方式來(lái)通信都可。但是其***的線程數(shù)量也有限制。
(1)單進(jìn)程模型
這種模型采用全異步的模式處理請(qǐng)求,進(jìn)程維護(hù)一個(gè)每個(gè)請(qǐng)求的全局隊(duì)列,工作進(jìn)程與網(wǎng)絡(luò)進(jìn)程是獨(dú)立的,采用共享內(nèi)存的模式進(jìn)行通信,在全異步的情況下,也能做到高并發(fā)量,和高吞吐量。這種模型易于控制,需要對(duì)過(guò)載進(jìn)行保護(hù)。
(二)幾種常見(jiàn)的模型對(duì)比
(1)程序復(fù)雜度
最復(fù)雜是采用具有調(diào)度功能的線程池,這種模型需要一個(gè)調(diào)度線程,調(diào)度線程要做的工作包括指派工作線程,過(guò)載保護(hù),與多個(gè)線程通信,同步。線程之間共享資源要加鎖,線程之間可以消除共享資源,提高處理能力??梢圆捎猛降奶幚淼哪J皆L問(wèn),但是風(fēng)險(xiǎn)較大。
單進(jìn)程的模型比較簡(jiǎn)單,一個(gè)進(jìn)程將要完成所有功能,包括收包,邏輯處理,過(guò)載保護(hù)。
(2)性能
一般來(lái)說(shuō),前端接收請(qǐng)求的,具有多客戶(hù)端,多版本,多協(xié)議的適合采用多線程的模式,如果有統(tǒng)一的協(xié)議格式,則應(yīng)當(dāng)采用具有調(diào)度線程的線程池來(lái)完成。如果協(xié)議不同,則需要采用不同的線程監(jiān)聽(tīng)不同的端口來(lái)解決。
后臺(tái)服務(wù)一般適合采用單進(jìn)程。后臺(tái)線程要求高并發(fā)量,高吞吐量。單進(jìn)程模型消除了鎖,并且避免了多線程很多的復(fù)雜問(wèn)題。多線程在開(kāi)發(fā)過(guò)程中還有個(gè)很大的缺點(diǎn)是不利于調(diào)試。對(duì)開(kāi)發(fā)者的調(diào)式技巧要求較高。
后臺(tái)也有使用多線程的,后臺(tái)的后臺(tái)一般都使用單進(jìn)程。
(3)競(jìng)爭(zhēng)
多線程存在競(jìng)爭(zhēng)問(wèn)題,多線程會(huì)遇到很多程序陷阱,全局的數(shù)據(jù),隊(duì)列,map等數(shù)據(jù)結(jié)構(gòu)的修過(guò)都需要加鎖
單線程的程序顯然不會(huì)存在競(jìng)爭(zhēng)性問(wèn)題,單線程在程序中編程是比較簡(jiǎn)單的。很多時(shí)序以及競(jìng)爭(zhēng)性問(wèn)題都不存在。
(4)服務(wù)健壯性
多線程中,任何一個(gè)線程出現(xiàn)問(wèn)題,都會(huì)引起整個(gè)進(jìn)程的掛掉,這與單進(jìn)程沒(méi)有區(qū)別。多線程的一個(gè)好處是可以調(diào)用同步的api,而單進(jìn)程網(wǎng)絡(luò)服務(wù)中一般只允許調(diào)用異步的API。
原文鏈接:http://blog.csdn.net/kingsleer/article/details/7661007
文章名稱(chēng):多線程程序與單進(jìn)程程序的架構(gòu)
URL地址:http://www.5511xx.com/article/dpihgej.html


咨詢(xún)
建站咨詢(xún)
