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

2022-09-07 11:30:08 字數 2400 閱讀 2657

本文介紹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,它可以把一段**定義為互斥段(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方法,就是每增乙個就每減乙個,正常來講,當我給出乙個數,那麼執行完之後...