多執行緒

 

  在我們建構 Tceyes 元件時,我們有用到執行緒(thread)[6],因此在加以介紹。執行緒是一輕量級的行程(light-weighted process),主要在時間共享( time sharing 設計下的作業系統才有的特色。執行緒主要用於非同步的(asynchronous) 執行工作,使我們得以在取入影像時能同時(concurrently) 執行數位影像處理工作。

  在 BCB 中,執行緒被包裝成 TThread 物件。每一個 TThread 的物件例,都是一新的可分別執行的執行緒。多個從 TThread 繼承的物件的物件例將使 BCB 的應用程式成為多緒的(multi-threaded)。要在應用程式使用執行緒,必須從 TThread 繼承,並覆寫(override) 她的方法。

  當一應用程式開始跑(run)之時,她會被載入記憶體並準備執行了。在這個時候她變成擁有一個或多個執行緒的行程。一執行緒在執行(execute)時會佔用到一部分的 CPU 時間。在一個行程中的執行緒們共用相同的定址空間且可存取該行程的共用變數。使用多執行緒可改善多個存取設備資源時的效率,並利用優先權(priority)來合理管理她們。下面是一些使用執行緒時必須知道的建議:

要創造及使用新執行緒類別如下:

執行(Execute 是一個必須被覆寫的抽象方法,她包括了執行緒一開始要執行時的程式碼:

virtual void __fastcall Execute(void);

  一個執行緒建立完是否接著繼續執行,由 CreatedSuspended 決定。若為 假(false),則會馬上執行。在我們寫元件時,就面臨選定要繼承的對象的問題。我們必須由所要設計之目的來決繼承的對象,由於我們所要創造的 TCeyes元件是要能夠 (1)顯示影像---Graph (2)控制視窗---Control,所以我們選定了 TGraphicControl 做為繼承對象。

下一頁 回首頁