C 多執行緒中 lock用法

2021-09-06 10:22:01 字數 1297 閱讀 4958

本文介紹c# lockkeyword,c#提供了乙個keywordlock,它能夠把一段**定義為相互排斥段(critical section),相互排斥段在乙個時刻內僅僅同意乙個執行緒進入執行,而其他執行緒必須等待。

每個執行緒都有自己的資源,可是**區是共享的,即每個執行緒都能夠執行相同的函式。這可能帶來的問題就是幾個執行緒同一時候執行乙個函式,導致資料的混亂,產生不可預料的結果,因此我們必須避免這種情況的發生。

c#提供了乙個keywordlock,它能夠把一段**定義為相互排斥段(critical section),相互排斥段在乙個時刻內僅僅同意乙個執行緒進入執行,而其他執行緒必須等待。在c# lockkeyword定義例如以下:

lock(expression) statement_block

expression代表你希望跟蹤的物件,一般是物件引用。

假設你想保護乙個類的例項,一般地,你能夠使用this;假設你想保護乙個靜態變數(如相互排斥**段在乙個靜態方法內部),一般使用類名就能夠了。

而statement_block就是相互排斥段的**,這段**在乙個時刻內僅僅可能被乙個執行緒執行。

以下是乙個使用c# lockkeyword的典型樣例,在凝視裡說明了c# lockkeyword的使用方法和用途。

演示樣比例如以下:

using

system; 

using

system.threading; 

namespace

thread******

internal

intwithdraw(

intamount) 

//取回、取款

//以下的**保證在當前執行緒改動balance的值完畢之前 

// 不會有其他執行緒也執行這段**來改動balance的值  

// 因此,balance的值是不可能小於0的  

lock

(this

)  else

}  }internal

void

dotransactions()

//取款事務

}}   

internal

class

test  

for  (

inti =0

; i 

<

10; i++)

for  (

inti =0

; i 

<

10; i

++)}} 

C 多執行緒中lock的用法

最近在看些c 的 發現很多是以前沒有接觸到了,只能上網查,把比較好的整理下來。經常碰到同時需要對某個資料進行操作,或者對某個檔案進行讀寫操作,對於這些操作我們以前往往不能很好的進行處理,自從c 語言中引入了lock這個關鍵字,以上問題就比較容易予以解決了,下面就是一段簡單的 public class...

C 多執行緒Lock

一.為什麼要lock,lock了什麼?當我們使用 執行緒的時候,效率最高的方式當然是 非同步,即各個執行緒同時執行,其間不相互依賴和等待。但當不同的執行緒都需要訪問某個資源的時候,就需要 同步機制 了,也就是說當對同乙個資源進行讀寫的時候,我們要使該資源在同一時刻只能被乙個執行緒操作,以確保每個操作...

多執行緒 Lock

reentrantlock和synchronized區別 作用跟synchronized 鎖一樣 reentrantlock 底層是 cas 值,期望,預期 synchronized 底層鎖公升級 reentrantlock 可以trylock 嘗試鎖 a.如果在某時間段內獲取到鎖,就執行 b.如果...