執行緒執行緒的分類(前台執行緒和後台執行緒)
後台執行緒
c#跨執行緒訪問
程序(process):可以理解為每乙個應用程式都是乙個程序。
.net提供的操作程序的類:process(非靜態類),該類雖然是非靜態類,但是提供了靜態方法:getprocesses()、kill()、start()等
static
void
main
(string
args)
console.
readkey()
;}
執行緒(thread):是程序中的基本執行單元,是作業系統分配cpu時間的基本單位,乙個程序可以包含若干個執行緒,在程序入口執行的第乙個執行緒被視為這個程序的主線程。
多執行緒:可以讓乙個程式同時處理多個事情(巨集觀同時,微觀交替);可以使程式的響應速度更快;可以讓占用大量處理時間的任務或當前沒有進行處理的任務定期將處理時間讓給別的任務;可以隨時停止任務;可以設定每個任務的優先順序以優化程式效能。
前台執行緒:只有所有的前台執行緒關閉才能完成程式關閉。預設情況下建立的執行緒都是前台執行緒。設定執行緒為後台執行緒的**:
static
void
main
(string
args)
後台執行緒:只要所有前台執行緒結束,後台執行緒會自動自動結束。
c#是不允許跨執行緒訪問的,也就是說我們建立的執行緒無法訪問其他執行緒裡面的內容。比如:在winform程式裡面新建乙個執行緒去改變label控制項的任意屬性,這個時候程式就會報錯,報錯原因就是因為label控制項屬於主線程,只能在主線程內進行訪問,跨執行緒訪問就會報錯。如果想要跨執行緒訪問,可以在引導程式時新增一下**:
private
void
form1_load
(object sender,
eventargs e)
執行緒和程序
標準的定義是 程序是執行緒的容器,乙個程序可於乙個或者多個執行緒,它是系統分配資源的基本單位 同乙個程序下,執行緒共享位址空降 已經開啟的檔案 訊號處理函式 報警訊號和其他,執行緒自己只保留程式計數器和棧。但是很遺憾的,這個只是教科書上的定義,實際情況是每個作業系統實現的作業系統特性不同,實現的方法...
程序和執行緒
乙個程序就是當前正在執行的乙個程式,包括程式的暫存器 程式計數器和變數的當前值。不同的程序擁有不同的位址空間。而執行緒可以理解為是程序中的控制流。同乙個程序內也就是說在同乙個位址空間內可以有多個控制流。也就是可以有多個線 程,他們共享位址空間。我們通常將程序視為是資源的集合,程序中有程式的正文 資料...
執行緒和程序
對於求職者,在面試的時候大多都會被問到 你對多執行緒了解麼?給我講講執行緒和程序的區別吧。在unix中,乙個程序可以理解為執行緒 位址空間 檔案描述符 資料,道破現實,其實就相當於老闆和員工,老闆就是程序,員工就是執行緒。老闆需要僱傭若干員工 執行緒 還要有辦公樓 位址空間 還要有若干的辦公裝置 檔...