關於多執行緒(轉)
關於多執行緒(轉)[@more@]我這裡可以大概給你介紹一下,但對於每一種程式設計模型要看具體的示例是什麼,而且我不可能給你羅列所有的程式碼,請諒解。
其實我們程式設計只要儘量站到比較高的層次,很多道理其實你會發現你已經懂了。
就多執行緒來說,我們開始設想只有兩個執行緒(>2時是不是算數學歸納法?)那麼如果兩個獨立的執行緒會發生什麼呢?
1。當一個執行緒進入moniter(也就是說站用一個object),另一個執行緒只有等待或返回,而我們把返回就稱為一種模式,這種模式的英文是Balking。
2。這兩個執行緒可以是有序的執行,而不是讓OS來排程,這時我們要用一個object來排程,這種模式稱為Scheduler。(這個詞及其含義其實OS中就有)。
3。如果這兩個執行緒同時讀一個資源,我們可以讓他們執行,但如果同時寫的話,你閉著眼睛都會知道可能出現問題,這時我們就要用另一種模式(Read/Write Lock)。
4。如果一個執行緒是為另一個執行緒服務的話,比如IE中負責資料傳輸的執行緒和介面顯示的執行緒,當一個圖片沒有傳完時,另一個執行緒就無法顯示,至少是部分沒有傳完。那麼這時我們要用一個模式稱為生產者和消費者,英文是Producer-Consumer。
5。兩個執行緒的消亡也可以不是完全又OS來控制的,這時我們需要給出一個條件,使得每個執行緒在符合條件是才消亡,也就是有序的消亡,我們稱為Two-Phase Termination。
那麼有這5個執行緒模型,基本上可以用到大多數程式設計任務中。我需要指出的三點是:
1。從高層次上我們可以再驗證是否含蓋了所有的情況。
2。其真實模式不是完全固定的或者說象定律一樣,而模式可以為不同的情況進行適當 的調整和組合,目的是為了簡潔和高效。
3。學習模式是為了具備更好的分析問題的能力。
而似乎這些來自西方的技術,並且是目前的,我們有沒有呢?其實我個人有個大膽的推測,我認為我們祖先的《孫子兵法》就是很好設計模式,因為它符合設計模式需要的基本特徵,就是在特定的條件下,用某種特定的方式合理且高效的解決問題。只不過一是用在軍事上,二是完備性方面我們還沒研究。但我認為我們至少沒有很好的擴充套件和進行類比式的應用,否則今天可能是我們中國人教外國人什麼是設計模式。
類比的方法實際上是發明或發現的常用方法。不知能否讓你感覺到其實外國的技術並不是那麼的神秘,也許我們從自身的文化當中挖掘出的東西太少了。
其實我們程式設計只要儘量站到比較高的層次,很多道理其實你會發現你已經懂了。
就多執行緒來說,我們開始設想只有兩個執行緒(>2時是不是算數學歸納法?)那麼如果兩個獨立的執行緒會發生什麼呢?
1。當一個執行緒進入moniter(也就是說站用一個object),另一個執行緒只有等待或返回,而我們把返回就稱為一種模式,這種模式的英文是Balking。
2。這兩個執行緒可以是有序的執行,而不是讓OS來排程,這時我們要用一個object來排程,這種模式稱為Scheduler。(這個詞及其含義其實OS中就有)。
3。如果這兩個執行緒同時讀一個資源,我們可以讓他們執行,但如果同時寫的話,你閉著眼睛都會知道可能出現問題,這時我們就要用另一種模式(Read/Write Lock)。
4。如果一個執行緒是為另一個執行緒服務的話,比如IE中負責資料傳輸的執行緒和介面顯示的執行緒,當一個圖片沒有傳完時,另一個執行緒就無法顯示,至少是部分沒有傳完。那麼這時我們要用一個模式稱為生產者和消費者,英文是Producer-Consumer。
5。兩個執行緒的消亡也可以不是完全又OS來控制的,這時我們需要給出一個條件,使得每個執行緒在符合條件是才消亡,也就是有序的消亡,我們稱為Two-Phase Termination。
那麼有這5個執行緒模型,基本上可以用到大多數程式設計任務中。我需要指出的三點是:
1。從高層次上我們可以再驗證是否含蓋了所有的情況。
2。其真實模式不是完全固定的或者說象定律一樣,而模式可以為不同的情況進行適當 的調整和組合,目的是為了簡潔和高效。
3。學習模式是為了具備更好的分析問題的能力。
而似乎這些來自西方的技術,並且是目前的,我們有沒有呢?其實我個人有個大膽的推測,我認為我們祖先的《孫子兵法》就是很好設計模式,因為它符合設計模式需要的基本特徵,就是在特定的條件下,用某種特定的方式合理且高效的解決問題。只不過一是用在軍事上,二是完備性方面我們還沒研究。但我認為我們至少沒有很好的擴充套件和進行類比式的應用,否則今天可能是我們中國人教外國人什麼是設計模式。
類比的方法實際上是發明或發現的常用方法。不知能否讓你感覺到其實外國的技術並不是那麼的神秘,也許我們從自身的文化當中挖掘出的東西太少了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958329/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python多執行緒中:如何關閉執行緒?Python執行緒
- java 多執行緒(關於Thread的講解)Java執行緒thread
- 多執行緒相關整理執行緒
- 關於多執行緒的兩種實現方式執行緒
- 多執行緒的執行緒狀態及相關操作執行緒
- 多執行緒和多執行緒同步執行緒
- 玩轉java多執行緒 之多執行緒基礎 執行緒狀態 及執行緒停止實戰Java執行緒
- 多執行緒--執行緒管理執行緒
- 執行緒與多執行緒執行緒
- 多執行緒【執行緒池】執行緒
- 多執行緒相關問題執行緒
- 關於Java併發多執行緒的一點思考Java執行緒
- 有個關於多執行緒的識別問題執行緒
- c#關於同步 /異常/多執行緒/事件 事例C#執行緒事件
- 關於linux多執行緒fork的理解和學習Linux執行緒
- Java多執行緒-執行緒中止Java執行緒
- 多執行緒之初識執行緒執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒系列(1),多執行緒基礎執行緒
- 關於C#多執行緒、易失域、鎖的分享C#執行緒
- Java多執行緒相關知識Java執行緒
- 多執行緒之volative關鍵字執行緒
- a、多執行緒執行緒
- 多執行緒系列之 執行緒安全執行緒
- iOS 多執行緒之執行緒安全iOS執行緒
- Java多執行緒之執行緒中止Java執行緒
- Android多執行緒之執行緒池Android執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- kuangshenshuo-多執行緒-執行緒池執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- 多執行緒之手撕執行緒池執行緒
- java多執行緒9:執行緒池Java執行緒
- 【java多執行緒】(二)執行緒停止Java執行緒
- 執行緒以及多執行緒,多程式的選擇執行緒
- 多執行緒學習一(多執行緒基礎)執行緒
- Java多執行緒(一)多執行緒入門篇Java執行緒
- 多執行緒,多程式執行緒