自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多線程程序與單進程程序的架構

開發(fā) 架構
多線程程序和單進程程序中都有使用,在網(wǎng)絡服務中都有使用。多線程程序主要用于同步的處理一些請求,為了在同一時間處理較多的請求。一般采取線程池的策略,一個主線程來分配請求。

多線程程序和單進程程序中都有使用,在網(wǎng)絡服務中都有使用。多線程程序主要用于同步的處理一些請求,為了在同一時間處理較多的請求。一般采取線程池的策略,一個主線程來分配請求。

(一)常見的進程模型:

(1)多線程模型

 

這種模式固定線程數(shù)量,吞吐量是接近每個線程的吞吐量*線程數(shù)。不具有伸縮性,伸縮性不強,在高負載下能力有很大限制。對于負載不大的情況下的同步數(shù)據(jù)訪問應用還是比較廣泛的。

(2)多線程模型二

                  

這種模型是一個線程負責調(diào)度任務到不同的線程,通常維護一個線程池,線程池的線程數(shù)量可以伸縮,由調(diào)度線程決定?;貓笠餐ㄟ^調(diào)度線程來處理,線程與線程之間通過共享內(nèi)存來獲取其他方式來通信都可。但是其***的線程數(shù)量也有限制。

(1)單進程模型


 

 

這種模型采用全異步的模式處理請求,進程維護一個每個請求的全局隊列,工作進程與網(wǎng)絡進程是獨立的,采用共享內(nèi)存的模式進行通信,在全異步的情況下,也能做到高并發(fā)量,和高吞吐量。這種模型易于控制,需要對過載進行保護。

(二)幾種常見的模型對比

(1)程序復雜度

最復雜是采用具有調(diào)度功能的線程池,這種模型需要一個調(diào)度線程,調(diào)度線程要做的工作包括指派工作線程,過載保護,與多個線程通信,同步。線程之間共享資源要加鎖,線程之間可以消除共享資源,提高處理能力。可以采用同步的處理的模式訪問,但是風險較大。

單進程的模型比較簡單,一個進程將要完成所有功能,包括收包,邏輯處理,過載保護。

(2)性能

一般來說,前端接收請求的,具有多客戶端,多版本,多協(xié)議的適合采用多線程的模式,如果有統(tǒng)一的協(xié)議格式,則應當采用具有調(diào)度線程的線程池來完成。如果協(xié)議不同,則需要采用不同的線程監(jiān)聽不同的端口來解決。

后臺服務一般適合采用單進程。后臺線程要求高并發(fā)量,高吞吐量。單進程模型消除了鎖,并且避免了多線程很多的復雜問題。多線程在開發(fā)過程中還有個很大的缺點是不利于調(diào)試。對開發(fā)者的調(diào)式技巧要求較高。

后臺也有使用多線程的,后臺的后臺一般都使用單進程。

(3)競爭

多線程存在競爭問題,多線程會遇到很多程序陷阱,全局的數(shù)據(jù),隊列,map等數(shù)據(jù)結構的修過都需要加鎖

單線程的程序顯然不會存在競爭性問題,單線程在程序中編程是比較簡單的。很多時序以及競爭性問題都不存在。

(4)服務健壯性

多線程中,任何一個線程出現(xiàn)問題,都會引起整個進程的掛掉,這與單進程沒有區(qū)別。多線程的一個好處是可以調(diào)用同步的api,而單進程網(wǎng)絡服務中一般只允許調(diào)用異步的API。

原文鏈接:http://blog.csdn.net/kingsleer/article/details/7661007

責任編輯:林師授 來源: kingsleer的博客
相關推薦

2010-03-18 16:02:09

python 多線程

2010-03-17 14:41:47

Java多線程進程

2010-03-10 08:54:49

Python多線程

2021-06-11 11:28:22

多線程fork單線程

2011-06-22 14:38:09

QT 多線程 線程安全

2022-05-26 08:31:41

線程Java線程與進程

2024-10-14 16:25:59

C#線程鎖代碼

2019-02-26 11:15:25

進程多線程多進程

2009-02-10 09:53:41

多線程程序設計Java

2010-09-17 09:08:49

Java多線程

2012-11-13 11:15:31

程序架構

2019-06-03 09:13:11

線程進程多線程

2011-06-22 14:30:44

QT 多線程 線程

2011-04-18 09:22:38

多線程

2010-03-15 19:47:30

Java多線程程序

2009-07-14 15:34:22

Swing中的線程GUI程序

2009-06-08 20:16:15

Eclipse客戶端多線程

2013-12-02 17:33:20

Linux進程多線程

2010-03-17 18:14:45

Java多線程程序

2016-10-09 20:15:30

多線程多進程
點贊
收藏

51CTO技術棧公眾號