C#_The concept of Thread and Process_Multithreading_Skill

遠古時期,在執行緒(thread)這個招式還未被發明的時候,
當時的「作業系統」與「應用程式」這兩個被大家常掛在嘴邊上的、每天在使用的概念
是以跑大隊接力的方式完成每一次工作

換言之,就是要A接給B之後B再接給C這感覺。
把它轉成程式概念去理解就像是
呼叫某個函式時,必須等該函式執行完畢,返回之後,呼叫端才能繼續下去。

圖片摘自:link

一件工作做完才接著做下一件




圖片摘自 : Huan-Lin 學習筆記 _ C# 學習筆記:多執行緒 (1) - 從零開始





作業系統(Operating System)在執行一個應用程式時,正在執行的應用程式稱為一個行程(process),系統會分配相對的系統資源與CPU時間。


程式碼會存放在記憶體內,然後由電腦一行一行去執行。
這一行一行執行串聯起來的動作,其實就是所謂一般常見的「單執行緒」執行緒種類。




不過這種設計無法應付一些特殊場合


【網路領域】

像是 網路領域中的 Server 就是最常見的例子

假設一個時間內只能接受一個客戶端程式連線,若同時間內有另一個客戶端想連線,

就會無法與伺服器程式建立連線。


因此,實際上伺服器程式應該具有處理多個客戶端連線功能!!!

我們又稱為 多執行緒伺服器的設計~~




執行緒是系統處理工作的基本單元,通常一個CPU在同一時間只能提供一個執行緒



程序執行緒間的關係我們可以把它想像成是工廠員工的關係,

工廠擁有資源與設備但需要由員工去操作才能生產產品







【影像領域】


多執行緒(multi-threading)就是說系統可以同時間內把多個員工派到同一家工廠去工作,此法稱做多執行緒平行執行,相較於單一執行緒處理方式,它有機會讓工作在比較短的時間內完成

執行緒是一輕量級的行程(light-weighted process),主要在時間共享( time sharing)
設計下的作業系統才有的特色。

執行緒主要用於非同步的(asynchronous) 執行工作,使我們得以在取入影像時同時執行數位影像處理工作。


目前多數的數位影像監視系統,其程式不 具有同步性,故在多事件偵測或偵測行程 (Process)的權重較重時經常導致其它行程執行延遲。

再者多事件偵測的影像處理是非常耗時,故如何充份發揮 CPU 效能,進而增加程式處理速度並降低處理時間是個新課題。


現今 CPU 發展到雙核心或者更多核心數,以往的影像監控系統是以單核心程式架構利用 CPU 資源,其架構應用在現今的多核心 CPU,是不能充份發揮多核心效能,故更有效利用 CPU 資源可增加程式處理速度並降低處理時間是個新課題。

因此,讓影像式監控系統的偵測事件具有同步性、可延展性及提升 CPU 使用效率也需要受到重視















參考:




昏睡領域 

Clark的心得筆記  


https://dotblogs.com.tw/clark/archive/2010/02/23/13739.aspx



Huan-Lin 學習筆記

C# 學習筆記:多執行緒 (1) - 從零開始

http://huan-lin.blogspot.com/2013/04/csharp-notes-multithreading-1.html


余小章 @ 大內殿堂

https://dotblogs.com.tw/yc421206/2011/01/05/20609


多執行緒處理模式應用於影像監控系統效益之研究

國立台北科技大學 機電整合研究所

http://www.inf.cyut.edu.tw/AIT2010/ft_265.pdf






留言

這個網誌中的熱門文章

何謂淨重(Net Weight)、皮重(Tare Weight)與毛重(Gross Weight)

Architecture(架構) 和 Framework(框架) 有何不同?_軟體設計前的事前規劃的藍圖概念

經得起原始碼資安弱點掃描的程式設計習慣培養(五)_Missing HSTS Header