欢迎来到天天文库
浏览记录
ID:45033543
大小:397.84 KB
页数:37页
时间:2019-11-08
《CBuilder多执行绪(Multi-Thread)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第三十三章多執行緒(Multi-Thread)在這一章,我們將會提到Multi-Thread到底是什麼東西,他在BCB的環境中該如何實作,並且實際了解在程式中使用Multi-Thread會帶來什麼樣的優點與缺點。1大綱33-1.什麼是Thread33-2.第一個Thread程式33-3.Thread程式的應用本章習題233-1.什麼是Thread常常可以聽到很多作業系統的廣告上都會聲稱自己擁有『多工』的處理模式,也有很多作業系統都支援『多處理器』的系統,其實這些多工或是多處理器的運作基礎都是『MultiThread』。我們先用兩張圖來表示什麼是NonThread的運作模
2、式,什麼是MultiThread的運作模式。NonThreadMultiThread333-1.什麼是Thread利用上面這兩張圖來做解釋,在整個運作的時間內總共有三個Process在運作。假設現在我們使用的是NonThread的模式在運作,這三個Process必須排隊,等前面那一個Process結束了才可以進行下一個Process的操作;反之,在MultiThread的運作模式下,只要該Process一進入CPU的處理排程內,就可以馬上獲得CPUTime來運作,只不過這三個Process在這種情況下並無法獨占整個CPU的資源,並須和其他的Process共享。433-1
3、.什麼是Thread不管在NonThread或是MultiThread的運作模式中,在一樣的資源下效能並不會有什麼增進,甚至在MultiThread的模式下還會花比較久的時間才能完成(因為有許多ContentSwitching或是Interrupt的動作)。不過因為在MultiThread的情況下可以多個程式一起執行,所以在使用上會比較方便,除非有自行調整各個Thread的優先權,否則在同一台機器上的Thread的優先權都是平等的!例如我們在電腦上可以一邊使用Word,聽mp3,使用Visio畫圖,利用瀏覽器搜尋網頁,寫程式等等,只要電腦夠Powerful,這些事情都可
4、以在同一個時間做,因為現在的OS(OperatingSystem)都已經支援多工了,只是越多工作同時進行,執行的效率也會越低。533-1.什麼是Thread除了上述我們舉了一個大家常『接觸』到的多工環境外,在Server等級的機器上,多工更是顯的重要,例如現在有100個人想要利用這台伺服器工作,如果沒有了多工,這台Server大概會被使用者唾棄,因為他每次只能處理一個Request,大家光是在排隊等CPUTime的時間就浪費了不少。反之,如果有多工的機制存在,Server可以將這些要求全部Create成Thread,並且將他們都放到背景執行,這樣將不會造成有些程序一直等
5、待的情況。633-1.什麼是Thread下圖就是我們針對一個Process將他分成多個Thread,讓這些Thread都可以同時取得CPU的資源,如果將下圖的Process換成『Machine』,Thread換成『Process』,這就是我們上面一直提到的多工處理了。733-1.什麼是Thread從前面的介紹可以得知,Thread在執行的時候並不是『一直』都在執行,而是斷斷續續的執行,所以這之間就會有許多Interrupt和ContentSwitching等相關SystemWork需要處理,當一個Thread暫時失去CPUTime的時候,就是進入Sleep的狀態,我們用
6、下圖來告訴各位,一個Thread的LifeCycle倒底是長什麼樣子!833-2.第一個Thread程式在這一小節我們將利用範例33-1建立一個最基本的Thread程式。我們在底下將會一步一步引導著各位讀者完成該範例。首先我們先簡單的介紹該如何在BCB中建立一個ThreadObject。要在BCB中建立一個ThreadObject最簡單就是在New的對話窗中選擇『ThreadObject』,接著會跳出一個對話窗讓我們輸入該ThreadObject的『ClassName』;底下則還有一個『CheckBox』讓我們決定是不是要設定『ThreadName』。當我們設定了Thr
7、eadName之後,BCB將會在Threadstart的時候自動去呼叫『SetName』這個Method。當我們按下對話窗『OK』的按鈕後,BCB就會自動幫我們Generate出該Thread的相關程式碼,這個Thread該做什麼事情就是由這個『unit.cpp』所決定的!933-2.第一個Thread程式在BCB自動產生的程式碼中有三個重要函式『Synchronize(UpdateCaption)』在這段預設產生的程式碼中有一小段文字提到Synchronize(UpdateCaption)的用法。那段文字說明了,當我們在Thread中要
此文档下载收益归作者所有