1. 程式人生 > >什麼是程序,什麼是執行緒,什麼時候用程序,什麼時候用執行緒

什麼是程序,什麼是執行緒,什麼時候用程序,什麼時候用執行緒

什麼是程序什麼是執行緒?

程序是指在系統中正在執行的一個應用程式;程式一旦執行就是程序

程序可以認為是程式執行時的一個例項。程序是系統進行資源分配的獨立實體, 且每個程序擁有獨立的地址空間。一個程序無法直接訪問另一個程序的變數和資料結構, 如果希望讓一個程序訪問另一個程序的資源,需要使用程序間通訊,比如:管道,檔案, 套接字等。

一個程序可以擁有多個執行緒,每個執行緒使用其所屬程序的棧空間。 執行緒與程序的一個主要區別是,同一程序內的多個執行緒會共享部分狀態, 多個執行緒可以讀寫同一塊記憶體(一個程序無法直接訪問另一程序的記憶體)。同時, 每個執行緒還擁有自己的暫存器和棧,其它執行緒可以讀寫這些棧記憶體。

執行緒是程序的一個實體,是程序的一條執行路徑

執行緒是程序的一個特定執行路徑。當一個執行緒修改了程序中的資源, 它的兄弟執行緒可以立即看到這種變化

執行緒程序的區別體現在幾個方面:

1)地址空間和其它資源(如開啟檔案):程序間相互獨立,同一程序的各執行緒間共享。某程序內的執行緒在其它程序不可見。

2)通訊:程序間通訊IPC(管道,訊號量,共享記憶體,訊息佇列),執行緒間可以直接讀寫程序資料段(如全域性變數)來進行通訊——需要程序同步和互斥手段的輔助,以保證資料的一致性。3)排程和切換:執行緒上下文切換比程序上下文切換要快得多。4)在多執行緒OS中,程序不是一個可執行的實體。

程序與執行緒的選擇取決以下幾點:

1、需要頻繁建立銷燬的優先使用執行緒;因為對程序來說建立和銷燬一個程序代價是很大的。

2、執行緒的切換速度快,所以在需要大量計算,切換頻繁時用執行緒,還有耗時的操作使用執行緒可提高應用程式的響應

3、因為對CPU系統的效率使用上執行緒更佔優,所以可能要發展到多機分佈的用程序,多核分佈用執行緒;

4、並行操作時使用執行緒,如C/S架構的伺服器端併發執行緒響應使用者的請求;

5、需要更穩定安全時,適合選擇程序;需要速度時,選擇執行緒更好。