程序與執行緒

2021-04-24 15:41:58 字數 930 閱讀 8258

程序(process):管理單元,管理分配應用程式的資料,**的記憶體空間.

執行緒(thread):執行單元,執行緒負責執行乙個預先編排好的**段,執行**,棧是基於執行緒的.

乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main()方法.

thread t =new thread(new threadstart(f));

f方法變數是放在t執行緒空間的棧中的.

thread t1=new thread(new threadstart(f));

f方法變數是放在t1執行緒空間的棧中的.

可以有無數個執行緒執行同乙個方法.方法中的變數(區域性變數)分別放在不同的執行緒空間當中,互不影響.

public void f()

如session,它是基於會話的,不是全域性的.所以session中的資料當前會話能看到.

瀏覽器向伺服器傳送第乙個請求,隨後要和伺服器一系列的連續互動,這段期間是乙個會話.

多個執行緒控制乙個全域性變數時候,需要用lock

全域性的變數是程序資料.

int sum=0;

public void f()

f的執行過程:[讀取sum]->[sum+2]->[sum複製到全域性]

如果2個子執行緒都在執行f方法.

t1執行緒執行的時候時間片到了,但t1並沒有執行完f方法的整個過程,也就是說sum還等於0,這時候t2介入,t2讀取sum為0,因為t1並沒有更新sum,這樣執行下去,,兩個執行緒最後肯定有乙個值被覆蓋,sum的最終值為2.並不為4.

所以在多執行緒控制全域性變數的情況下,在處理這些全域性變數的時候,為了防止併發操作,需要用鎖(lock)來解決.也就是說,先讓乙個執行緒執行完畢之後,在讓第二個執行緒介入.

加鎖的目的是保證涉及到的全域性變數的**不會被多個執行緒並行的去執行.

lock(o) //o為鎖物件(例項或typeof(類名))

程序與執行緒

程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...

程序與執行緒

程序包括 1 私有的虛位址空間 2 可執行程式 與資料 3 開啟系統資源列表控制代碼 4 安全訪問標誌 5 程序id 6 至少有乙個執行執行緒 執行緒包括 1 一組cpu暫存器狀態 2 兩個堆疊 系統態與使用者態 3 tls 執行緒區域性儲存區 4 執行緒id 5 安全特性 因此程序是不活潑的,它從...

程序與執行緒

1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...