Windows程序執行緒相關概念

2021-08-02 02:16:38 字數 1574 閱讀 7703

需要程序的原因:多道程式在執行時,需要共享系統資源,從而導致各程式在執行過程中出現相互制約的關係,程式的執行表現出間斷性、非封閉性、不可再現性等特徵。傳統的程式本身是一組指令的集合,是乙個靜態的概念,無法描述程式在記憶體中的執**況,故引入程序的概念。多道程式併發執行,提高系統吞吐量和系統資源利用率

程序的組成:程式、資料、pcb(程序控制塊)

c++中程序執行的三個狀態:阻塞、執行、就緒

阻塞:在某些外部事件發生前,該程序不能執行

執行:程序正在使用cpu

就緒:程序可執行,但是它暫時停止讓其他程序執行

執行和就緒狀態有些類似。處於這兩種狀態的程序都可以執行,只是在就緒狀態中,程序暫時沒有cpu可用。阻塞裝填就與前兩種狀態不同,在阻塞狀態中,即使cpu空閒,程序也不能執行。

要是對程序的狀態進行更加詳細劃分,那麼程序的狀態可以用下圖來概括

(1)在傳統的作業系統中,每個程序都有乙個位址空間和乙個控制線程。在多數情況下,乙個程序的位址空間重要執行多個執行緒,在準並行上下文中,這些執行緒就像是不同的程序一樣。有多個執行緒的主要原因是:許多應用程式都要求能立即執行多項操作,把執行在準並行上下文中的應用程式分解成多個單獨的執行緒,程式設計模型就變得更簡單了。通過新增執行緒,作業系統提供了乙個新特性:並行實體能共享乙個位址空間和他們的所有資料,這是執行併發的必要條件。

(2)程序和執行緒的不同在於,執行緒共享乙個位址空間,而程序擁有單獨的位址空間。

(3)cpu時間。執行緒是cpu可執行排程的最小單位。也就是說,程序本身不能獲得cpu時間,只有它的執行緒才可以。執行緒通過它的工作變數和棧來儲存cpu暫存器的資訊。棧包含與函式呼叫相關的資料,在每個函式被呼叫但尚未返回時,為其建立乙個框架。執行緒可以再cpu上執行,而程序則不可以。但是,程序至少必須有乙個執行緒,通常把這個執行緒成為主線程。因此,說在

cpu上執行的程序時,指的是程序中的主線程。程序用於分組資源,執行緒是在cpu上排程執行的實體。在同乙個程序環境中可以執行多個執行緒,多個執行緒並行執行在乙個程序上下文中,與在乙個計算機中並行執行的多個程序相同。

createprocess()函式用於建立乙個新程序和其主線程,新程序在主程序的安全上下文中執行。

終止程序較好的做法是呼叫exitprocess()函式,因為它會給所屬程序的所有dll搜傳送一條即將終止的訊息。而關閉程序的其他方法就不會這樣做(如,terminateprocess() api)。注意,只要程序中只要有乙個執行緒呼叫exitprocess()函式,該程序的其他執行緒都會立即終止,根本沒有機會執行其他**(包括相關dll的執行緒終止**)。

程式中能被訪問共享記憶體的部分叫做臨界區(critical section)。為了必滿競態條件,必須確保一次只能有乙個程序進入臨界區。要使用共享資料,必須要處理好下面的4個條件。

(1)不允許同時有兩個程序在臨界區內

(2)不得對cpu的速度或數量程序假設

(3)在臨界區外執行的程序阻礙其他程序

(4)不得由任何程序處於永遠等待進入臨界區

程序與執行緒相關概念及區別

程序是程式的一次動態執行過程。它經歷了從 載入 執行到執行完畢的乙個完整過程。多程序作業系統能同時執行多個程序 程式 由於cpu具備分時機制,所以每個程序都能迴圈獲得自己的cpu時間片。執行緒是比程序更小的執行單位,是在程序的基礎上進行的進一步劃分。多執行緒是指乙個程序在執行過程中可以產生多個更小的...

程序相關概念

1.程式與程序 程式是指編譯好的二進位制檔案,在磁碟上,不占用系統資源 cpu 記憶體 開啟的裝置 程序是活躍的程式,占用系統資源,在記憶體中執行 程式執行起來會產生乙個程序 程式就好比是劇本,而程序就是按照劇本演的戲 舞台 演員 道具等就相當於系統資源 同乙個劇本可以在多個地方同時上演,同乙個程式...

Python 多執行緒 程序與執行緒相關概念 一

並行 同時做某些事,可以互不干擾的同一時刻做幾件事。併發 也是同時做某些事,但是強調,同一時刻做了幾件事。1 佇列 緩衝區 排隊就是佇列,先進先出。排隊是一種解決併發的方法。排成的佇列,其實就是乙個緩衝地帶,就是緩衝區。2 優先佇列 在到達佇列時優先處理,就是優先佇列。3 爭搶 資源被乙個執行緒佔據...