1. 程式人生 > 其它 >Alpha通道分割影象&&視覺化修改Alpha通道

Alpha通道分割影象&&視覺化修改Alpha通道

-------------程序

程序(Process)是Windows系統中的一個基本概念,它包含著一個執行程式所需要的資源。一個正在執行的應用程式在作業系統中被視為一個程序,程序可以包括一個或多個執行緒。

執行緒是作業系統分配處理器時間的基本單元,在程序中可以有多個執行緒同時執行程式碼。程序之間是相對獨立的,一個程序無法訪問另一個程序的資料(除非利用分散式計算方式),

一個程序執行的失敗也不會影響其他程序的執行,Windows系統就是利用程序把工作劃分為多個獨立的區域的。程序可以理解為一個程式的基本邊界。是應用程式的一個執行例程,

是應用程式的一次動態執行過程。

------------執行緒

執行緒(Thread)是程序中的基本執行單元,是作業系統分配CPU時間的基本單位,一個程序可以包含若干個執行緒,在程序入口執行的第一個執行緒被視為這個程序的主執行緒。

在.NET應用程式中,都是以Main()方法作為入口的,當呼叫此方法時系統就會自動建立一個主執行緒。執行緒主要是由CPU暫存器、呼叫棧和執行緒本地儲存器(Thread Local Storage,TLS)

組成的。CPU暫存器主要記錄當前所執行執行緒的狀態,呼叫棧主要用於維護執行緒所呼叫到的記憶體與資料,TLS主要用於存放執行緒的狀態資訊。

二、多執行緒

多執行緒的優點:可以同時完成多個任務;可以使程式的響應速度更快;可以讓佔用大量處理時間的任務或當前沒有進行處理的任務定期將處理時間讓給別的任務;可以隨時停止任務;

可以設定每個任務的優先順序以優化程式效能。那麼可能有人會問:為什麼可以多執行緒執行呢?總結起來有下面兩方面的原因:

1、CPU執行速度太快,硬體處理速度跟不上,所以作業系統進行分時間片管理。這樣,從巨集觀角度來說是多執行緒併發的,因為CPU速度太快,察覺不到,看起來是同一時刻執行了不同的操作。

但是從微觀角度來講,同一時刻只能有一個執行緒在處理。

2、目前電腦都是多核多CPU的,一個CPU在同一時刻只能執行一個執行緒,但是多個CPU在同一時刻就可以執行多個執行緒。

然而,多執行緒雖然有很多優點,但是也必須認識到多執行緒可能存在影響系統性能的不利方面,才能正確使用執行緒。不利方面主要有如下幾點:

(1)執行緒也是程式,所以執行緒需要佔用記憶體,執行緒越多,佔用記憶體也越多。

(2)多執行緒需要協調和管理,所以需要佔用CPU時間以便跟蹤執行緒。

(3)執行緒之間對共享資源的訪問會相互影響,必須解決爭用共享資源的問題。

(4)執行緒太多會導致控制太複雜,最終可能造成很多程式缺陷。

當啟動一個可執行程式時,將建立一個主執行緒。在預設的情況下,C#程式具有一個執行緒,此執行緒執行程式中以Main方法開始和結束的程式碼,Main()方法直接或間接執行的每一個命令都有

預設執行緒(主執行緒)執行,當Main()方法返回時此執行緒也將終止。一個程序可以建立一個或多個執行緒以執行與該程序關聯的部分程式程式碼。在C#中,執行緒是使用Thread類處理的,

該類在System.Threading名稱空間中。使用Thread類建立執行緒時,只需要提供執行緒入口,執行緒入口告訴程式讓這個執行緒做什麼。通過例項化一個Thread類的物件就可以建立一個執行緒。

建立新的Thread物件時,將建立新的託管執行緒。Thread類接收一個ThreadStart委託或ParameterizedThreadStart委託的建構函式,該委託包裝了呼叫Start方法時由新執行緒呼叫的方法,示例程式碼如下:

Thread thread=new Thread(new ThreadStart(method));//建立執行緒

thread.Start();                                                           //啟動執行緒

上面程式碼例項化了一個Thread物件,並指明將要呼叫的方法method(),然後啟動執行緒。ThreadStart委託中作為引數的方法不需要引數,並且沒有返回值。ParameterizedThreadStart委託一個物件作為引數,

利用這個引數可以很方便地向執行緒傳遞引數,示例程式碼如下:

Thread thread=new Thread(new ParameterizedThreadStart(method));//建立執行緒

thread.Start(3);                                                                             //啟動執行緒

建立多執行緒的步驟:
1、編寫執行緒所要執行的方法
2、例項化Thread類,並傳入一個指向執行緒所要執行方法的委託。(這時執行緒已經產生,但還沒有執行)
3、呼叫Thread例項的Start方法,標記該執行緒可以被CPU執行了,但具體執行時間由CPU決定