第三十三章多执行绪(Multi-Thread).ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三十三章多执行绪(Multi-Thread).ppt

第三十三章 多執行緒(Multi-Thread) 在這一章,我們將會提到Multi-Thread到底是什麼東西,他在BCB的環境中該如何實作,並且實際了解在程式中使用Multi-Thread會帶來什麼樣的優點與缺點。 大綱 33-1. 什麼是Thread 33-2. 第一個Thread程式 33-3. Thread程式的應用 本章習題 33-1. 什麼是Thread 常常可以聽到很多作業系統的廣告上都會聲稱自己擁有『多工』的處理模式,也有很多作業系統都支援『多處理器』的系統,其實這些多工或是多處理器的運作基礎都是『Multi Thread』。我們先用兩張圖來表示什麼是Non Thread的運作模式,什麼是Multi Thread的運作模式。 33-1. 什麼是Thread 利用上面這兩張圖來做解釋,在整個運作的時間內總共有三個Process在運作。假設現在我們使用的是Non Thread的模式在運作,這三個Process必須排隊,等前面那一個Process結束了才可以進行下一個Process的操作;反之,在Multi Thread的運作模式下,只要該Process一進入CPU的處理排程內,就可以馬上獲得CPU Time來運作,只不過這三個Process在這種情況下並無法獨占整個CPU的資源,並須和其他的Process共享。 33-1. 什麼是Thread 不管在Non Thread或是Multi Thread的運作模式中,在一樣的資源下效能並不會有什麼增進,甚至在Multi Thread的模式下還會花比較久的時間才能完成(因為有許多Content Switching或是Interrupt的動作)。 不過因為在Multi Thread的情況下可以多個程式一起執行,所以在使用上會比較方便,除非有自行調整各個Thread的優先權,否則在同一台機器上的Thread的優先權都是平等的! 例如我們在電腦上可以一邊使用Word,聽mp3,使用Visio畫圖,利用瀏覽器搜尋網頁,寫程式等等,只要電腦夠Powerful,這些事情都可以在同一個時間做,因為現在的OS(Operating System)都已經支援多工了,只是越多工作同時進行,執行的效率也會越低。 33-1. 什麼是Thread 除了上述我們舉了一個大家常『接觸』到的多工環境外,在Server等級的機器上,多工更是顯的重要,例如現在有100個人想要利用這台伺服器工作,如果沒有了多工,這台Server大概會被使用者唾棄,因為他每次只能處理一個Request,大家光是在排隊等CPU Time的時間就浪費了不少。 反之,如果有多工的機制存在,Server可以將這些要求全部Create成Thread,並且將他們都放到背景執行,這樣將不會造成有些程序一直等待的情況。 33-1. 什麼是Thread 下圖就是我們針對一個Process將他分成多個Thread,讓這些Thread都可以同時取得CPU的資源,如果將下圖的Process換成『Machine』,Thread換成『Process』,這就是我們上面一直提到的多工處理了。 33-1. 什麼是Thread 從前面的介紹可以得知,Thread在執行的時候並不是『一直』都在執行,而是斷斷續續的執行,所以這之間就會有許多Interrupt和Content Switching等相關System Work需要處理,當一個Thread暫時失去CPU Time的時候,就是進入Sleep的狀態,我們用下圖來告訴各位,一個Thread的Life Cycle倒底是長什麼樣子! 33-2. 第一個Thread程式 在這一小節我們將利用範例33-1建立一個最基本的Thread程式。我們在底下將會一步一步引導著各位讀者完成該範例。 首先我們先簡單的介紹該如何在BCB中建立一個Thread Object。 要在BCB中建立一個Thread Object最簡單就是在New的對話窗中選擇『Thread Object』,接著會跳出一個對話窗讓我們輸入該Thread Object的『Class Name』;底下則還有一個『Check Box』讓我們決定是不是要設定『Thread Name』。 當我們設定了Thread Name之後,BCB將會在Thread start的時候自動去呼叫『SetName』這個Method。 當我們按下對話窗『OK』的按鈕後,BCB就會自動幫我們Generate出該Thread的相關程式碼,這個Thread該做什麼事情就是由這個『unit.cpp』所決定的! 33-2. 第一個Thread程式 在BCB自動產生的程式碼中有三個重要函式 『Synchronize(UpdateCaption)』 在這段預設產生的程式碼中有一小段

您可能关注的文档

文档评论(0)

suijiazhuang2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档