C 關於多執行緒及執行緒同步 lock鎖的應用

2021-09-07 20:31:23 字數 1583 閱讀 2199

form1.cs

using

system;

using

system.collections.generic;

using

system.componentmodel;

using

system.data;

using

system.drawing;

using

system.linq;

using

system.text;

using

system.threading;

using

system.threading.tasks;

using

system.windows.forms;

namespace

winlock

private

void btn_start_click(object

sender, eventargs e)

for (int i = 0; i < 10; i++)

}delegate

void addlistboxitemdelegate(string str);//

在類的內部也能宣告**

public

void addlistboxitem(string

str)

else}}

}

account.cs

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

using

system.threading;

using

system.threading.tasks;

namespace

winlock

//////

取款

/// ///

取款金額

///餘額 private

int withdraw(int

amount)

//將lock (lockedobj)這句注釋掉,看看會發生什麼情況

lock (lockedobj)

取款:"

, balance, amount);

balance = balance -amount;

str += "

取款後餘額:

" +balance;

form1.addlistboxitem(str);

return

amount;

}else

}}///自動取款

public

void dotransactions()//

transaction--事務}}

}

不加lock 會出現統一資源被多次利用的情況

C 多執行緒中通過lock實現執行緒同步

lock定義 lock關鍵字用來確保 塊執行完成,而不會被其他執行緒中斷。它可以把一段 定義為互斥段 critical section 互斥段在乙個時刻只允許乙個執行緒進入執行,而其他執行緒必須等待。這是通過在 執行期間為給定物件獲取互斥鎖來實現的。在多執行緒中,每個執行緒都有自己的資源,但是 區是...

C 多執行緒lock解決資料同步

1.例項 public class threadtest4 public static int number 1 public static void threadmethod number thread.currentthread.managedthreadid,number thread.sle...

C 多執行緒lock解決資料同步

1.例項 public class threadtest4 public static int number 1 public static void threadmethod number thread.currentthread.managedthreadid,number thread.sle...