使用乙個東西之前,知道其為什麼會誕生,才能夠好的知道其有點或者好處,更有效地使用。
要說執行緒的好處,必須要提到程序。
程序的出現是通過犧牲了cpu時間和記憶體空間來換取能夠同時執行,或者叫模仿同時執行,也就是併發。
那麼,執行緒呢?
現成的誕生,是因為程序有缺陷,程序的缺陷是啥?
剛剛我們說程序浪費了記憶體空間和cpu時間。在單核時代,為了能夠模擬出多個程序同時在執行,是通過程序輪著執行的,只不過時間非常短,然我們感覺像在同時執行而已。所以,我們需要在系統或者叫核心中儲存程序的一些資訊,來支援能夠切回來繼續執行。這個東西在核心中叫做pcb(process control block)程序控制塊。裡面儲存了程序的唯一編號,程序需要的資源,程序**在記憶體中的位址,執行切換時的狀態等等等。
這樣的話,是不是浪費了空間。程序之間不斷的切換,不斷地儲存換入程序,並且還要分配資源,浪費了非常多的時間。
執行緒呢,相對於程序更多的浪費了空間,但是節省了時間。
因為程序切換時需要資源分配,浪費了時間,這些時間相對於cpu的執行速度來說,是非常非常多的。
因此,將程序分欸多個執行緒,每個執行緒僅需要一點點執行所必須的資源,以能夠非常塊的切換,這樣就能省下時間了哦。為了管理執行緒,當然有tcb(theard control block)執行緒控制塊,來管理執行緒,這樣就會浪費一定的記憶體空間。不過你,相對於時間,空間浪費就浪費吧。
這裡可能會有人說,乙個程序浪費的時間和構成程序的所有執行緒這兩者之間,浪費的時間好像是乙個程序浪費的時間哎。確實。
當時,當考慮到下面的問題的時候,你就不會這樣想了。
大家都是通過網路來上網,連線的是伺服器。多個人同時連線一台伺服器上的程序。如果沒有執行緒,乙個程序只能處理乙個使用者,處理多個使用者的話,只能通過多程序啦,。如果有了執行緒的話,每有乙個使用者連線,就建立乙個執行緒。
所以呢,對於這種伺服器端,多連線的情況下,多執行緒就有用啦。當然,更多的使用者連線,就需要分布式伺服器啦。
而且,有一點,程序間通訊相對較麻煩,有名無名·管道,訊息佇列,共享記憶體,檔案,socket。
但是,乙個程序中的所有執行緒共享程序的空間,執行緒間通訊是非常方便的。
分析了執行緒的優勢,我們就能夠更好的使用執行緒啦。
談談多執行緒
其實對於死鎖,很多人會望而生畏。而事實上,死鎖的原理非常之簡單。死鎖的本質就是,a物件佔據了資源x,b也差不多同時占用了資源y。在x和y資源都沒有釋放的時候,a和b試圖申請資源y和x。於是a在等b釋放y,b在等a釋放x。更直白一點,乙個男人和女人相互暗戀,男人想要女的先示愛,他才向女的表白,女的想要...
談談多執行緒程式設計
我只進行過win32下多執行緒程式的專案開發,類unix系統只是有過學習了解,所以有以偏概全的情況請大家指正 總結 不知道大家有沒有這種感覺,掌握多執行緒程式的編寫好像是高階windows開發人才的必備的一種技能。我的了解 類unix系統的的程序開銷比較小,彷彿用多程序開發居多 做了一下簡要統計,在...
菜鳥 也談談多執行緒
做開發快一年了,大部分都是有的dan執行緒,也從來沒有考慮去去多執行緒處理一些東西。今天突然 看到 petshop的多執行緒 就貼出來吧 static void main console.writeline processing started.press enter to stop.console...