Asychronous programming

Processes、Thread、Fiber

原本的影片在這段沒有提到什麼東西,所以沒什麼東西可以寫=_=。

於是乎,今天就來分享一下非同步程式設計的一些知識

處理序(Processes)、執行緒(Thread)與纖程(Fiber)

 

處理序(Processes)

處理序代表了作業系統上執行中的一個應用程式,並擁有自己的記憶體區塊,擁有獨佔的資源與資料。每個處理序都被單獨的隔離,一個處理序的損毀不會影響到其他處理序。

Windows看處理序的方式如下圖:

執行緒(Thread)

執行緒是一個作業系統可分派的的基本單元,並且擁有自己的堆疊(stack)。 執行緒附屬於處理序底下,一個處理序可以包含一個多或個的執行緒,並且同一處理序底下多個執行緒共用同一份資源。 作業系統會先決定下一個執行的處理序,接著才會分派該處理序內的執行緒,且執行緒的分派受作業系統管理,程式設計師沒有辦法進行完全干涉。

使用Visual Studio 偵錯模式看多執行緒,可以看到一個處理序包含多個執行緒,如下圖

纖程(Fiber)

纖程是微軟公司在自己的作業系統上提出的一個概念。 一個執行緒可以擁有0個或多個纖程,一個纖程可以視為一個輕量級的執行緒,一樣擁有自己的堆疊和內容。  纖程完全受控於程式,可允許程式設計師對多工進行完全自訂的分派和控制。   .NET執行框架並沒有作出關於執行緒真實的保證,也就是說程式中新建的執行緒,並不一定會在作業系統層面上產生一個真正的執行緒。 在.NET框架繼續的情況下,一個程式中的執行緒很有可能對應某個纖程。

 

 

一天一分享,身體好健康。

該追究的不是過去的原因,而是現在的目的。