描述C 多執行緒中 lock關鍵字

2021-09-30 10:38:57 字數 1204 閱讀 9891

本文介紹c# lock關鍵字,c#提供了乙個關鍵字lock,它可以把一段**定義為互斥段(critical section),互斥段在乙個時刻內只允許乙個執行緒進入執行,而其他執行緒必須等待。

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

c#提供了乙個關鍵字lock,它可以把一段**定義為互斥段(critical section),互斥段在乙個時刻內只允許乙個執行緒進入執行,而其他執行緒必須等待。在c# lock關鍵字定義如下:

lock(expression) statement_block

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

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

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

下面是乙個使用c# lock關鍵字的典型例子,在注釋裡說明了c# lock關鍵字的用法和用途。

示例如下:

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 多執行緒中 lock關鍵字 本文介紹c lock 關鍵字,c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥段在乙個時刻內只允許乙個執行緒進入執行,而其他執行緒必須等待。每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式...

描述C 多執行緒中 lock關鍵字 摘

本文介紹c lock關鍵字,c 提供了乙個關鍵字lock,它可以把一段 定義為互斥段 critical section 互斥段在乙個時刻內只允許乙個執行緒進入執行,而其他執行緒必須等待。每個執行緒都有自己的資源,但是 區是共享的,即每個執行緒都可以執行相同的函式。這可能帶來的問題就是幾個執行緒同時執...

多執行緒 使用C 中的lock關鍵字

多執行緒 使用c 中的 lock 關鍵字 在多個執行緒同時訪問乙個物件時,就可能出現第二個動作覆蓋第乙個動作的情況。這樣的執行緒是不安全的。所以我們可對方法體使用lock。如,執行緒t,t1 都要執行counter類下的count方法,就是每增乙個就每減乙個,正常來講,當我給出乙個數,那麼執行完之後...