多執行緒概述及工作原理

2022-02-25 02:47:01 字數 1309 閱讀 5768

執行緒是程式執行的基本原子單位. 乙個程序可以由多個執行緒組成.

在分布式程式設計中,正確使用執行緒能夠很好的提高應用程式的效能及執行效率.

實現原理是將乙個程序分成多個執行緒,然後讓它們併發非同步執行,來提高執行效率.

併發執行並不是同時執行(占有cpu),任意時刻還是只能有乙個執行緒占用cpu,

只不過是它們爭奪cpu頻繁一些,感覺到他們似乎都在執行.

下面通過乙個簡單的例子來說明一下它的工作原理

設乙個程序要完成兩個任務:任務1和任務2

並且任務1要經歷: a1->b1->c1三個步驟才能完成

任務2要經歷: a2->b2->c2三個步驟才能完成

i.如果兩個任務同步執行的話完成兩個任務是這樣執行的:

花費時間段:   1   2   3   4   5 6

a1->b1->c1->a2->b2-c2

這樣從a1一直到c2只能乙個乙個地執行. 當a1占用cpu執行時,從b1到c2執行緒只能在等待.

甚至它們不相互競爭同乙個資源時,也要等待前面的執行完成,自己才能執行

ii.如果兩個任務非同步執行的話完成兩個任務是這樣執行的:

花費時間段:   1   2   3   4   5 6   

a1->b1->c1

a2->b2->c2

這樣,任務1和任務2就分成兩個獨立的執行物件. 也就是說:

a1->b1->c1 和 a2->b2->c2 是併發執行的. 當a1在執行某個運算時,a2執行緒可以去做其它

的一些事情,比如訪問磁碟等外部裝置等

對比一下i和ii兩種執行方式,完成所有任務i需要6個時間段,

而ii只需要3個時間段就完成了(事實上會多一點,因為方式ii中的執行緒輪詢cpu比較頻繁,在輪詢cpu時會花費一些時間);方式ii所需時間是i的一半. 所以ii完成整個任務要快.

另一方面,ii執行方式,完成每個任務所需的時間可能會花費時間長些,因為i方式是各個執行緒依次占用cpu執行,當a1占用cpu時,cpu就只為a1服務,當a1執行完後,才讓出cpu。ii情況就不一樣了,它們是非同步執行的,輪流使用cpu頻繁,經常讓出或占有cpu,執行每個執行緒完成的時間也就會相對長些.

一般情況下,如果多個執行緒在執行時都要搶占某乙個資源或某幾個資源,則最好不用非同步執行緒執行.因為它們是併發執行,很可能同時爭奪某個資源有cpu,這時要麼執行資源分配演算法(比如要判斷哪個執行緒優先順序高,這要花費時間),或者是按時間片演算法(這樣要付出 輪詢cup/交接/讓出cpu 所需的時間). 如果多個執行緒所需要的系統資源是比較均勻的,這時完全可以讓它們非同步併發執行,比如: 當乙個執行緒在給客戶端

發出訊息後,並不是一直在等待此客戶端回應,它可以繼續處理下乙個客戶端請求.

DHCP概述及原理

概述 dhcp是動態主機配置協議,由ietf internet網路工程師任務小組 組織制定,用來簡化主機位址分配管理。配置dhcp位址分配服務 1 安裝dhcp包 root localhost yum y install dhcp2 修改配置檔案 etc dhcp dhcpd.conf root l...

多執行緒 多執行緒原理

我們首先要知道什麼是多執行緒,說白了就是多個執行緒,執行緒是什麼呢,其實就是程序執行的途徑,那麼說道這裡我們又引入了乙個新的名字,就是程序,那麼我們來看看什麼是程序,其實我們自己也能看到,啟動電腦的任務管理器,我們就可以看到程序選項,裡面是我們電腦所有的程序,我們會發現有很多的程序.簡單地說就是程序...

Hive概述及架構設計原理

定義 o hive是建立在 hadoop 上的資料倉儲基礎架構和解決方案 o 架構 支援拿來即用,亦支援靈活的引數和計算引擎的變更作用 o 拿出了資料倉儲構建的完整解決方案意義 o 基於hadoop平台解決了企業資料倉儲構建的核心技術問題,證明了hadoop平台的強大。o 進一步降低了hadoop使...