欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

io多路復用和多線程的區(qū)別

傅智翔2年前72瀏覽0評論

io多路復用和多線程的區(qū)別?

1、多進程模型的優(yōu)缺點

(1)優(yōu)點:

1)每個進程互相獨立,不影響主程序的穩(wěn)定性,子進程崩潰沒關系;

2)通過增加CPU,就可以容易擴充性能;

3)可以盡量減少線程加鎖/解鎖的影響,極大提高性能,就算是線程運行的模塊算法效率低也沒關系;

4)每個子進程都有2GB地址空間和相關資源,總體能夠達到的性能上限非常大。

(2)缺點:

1)邏輯控制復雜,需要和主程序交互;

2)需要跨進程邊界,如果有大數(shù)據(jù)量傳送,就不太好,適合小數(shù)據(jù)量傳送、密集運算 ;

3)多進程調(diào)度開銷比較大。

2、多線程模型的優(yōu)缺點

(1)優(yōu)點:

1)無需跨進程邊界;

2)程序邏輯和控制方式簡單;

3)所有線程可以直接共享內(nèi)存和變量等;

4)線程方式消耗的總資源比進程方式好;

(2)缺點:

1)每個線程與主程序共用地址空間,受限于2GB地址空間;

2)線程之間的同步和加鎖控制比較麻煩;

3)一個線程的崩潰可能影響到整個程序的穩(wěn)定性;

4)到達一定的線程數(shù)程度后,即使再增加CPU也無法提高性能,

5)線程能夠提高的總性能有限,而且線程多了之后,線程本身的調(diào)度也是一個麻煩事兒,需要消耗較多的CPU 。

3、I/O多路復用的優(yōu)缺點

(1)優(yōu)點:

1)相比于多線程和多進程,I/O多路復用是在單一進程的上下文中的,當有多個并發(fā)連接請求時,多線程或者多進程模型需要為每個連接創(chuàng)建一個線程或者進程,而這些進程或者線程中大部分是被阻塞起來的。由于CPU的核數(shù)一般都不大,比如4個核要跑1000個線程,那么每個線程的時間槽非常短,而線程切換非常頻繁。這樣是有問題的。而使用I/O多路復用時,處理多個連接只需要1個線程監(jiān)控就緒狀態(tài),對就緒的每個連接開一個線程處理(由線程池支持)就可以了,這樣需要的線程數(shù)大大減少,減少了內(nèi)存開銷和上下文切換的CPU開銷。

2)整個過程只在調(diào)用select、poll、epoll這些調(diào)用的時候才會阻塞,收發(fā)客戶消息是不會阻塞的,整個進程或者線程就被充分利用起來,這就是事件驅動。

(2)缺點:

單線程模型不能有阻塞,一旦發(fā)生任何阻塞(包括計算機計算延遲)都會使得這個模型不如多線程。另外,單線程模型不能很好的利用多核cpu。

java什么是線程加鎖,io多路復用和多線程的區(qū)別