我是 C# 的初学者。我正在查看多线程示例。
我已经设置了一个多线程的方法调用DoTransactions()
,它又会生成一个随机数 as amount
,并调用方法来Withdraw()
扣除salary
。amount
1)我不明白的是为什么作者选择锁定对象thisLock
而不是锁定工资?我看到其他一些人也通过声明一个对象并锁定它来以这种方式锁定线程。
2)有时我无法调试其他线程运行时调用的方法。(按 F10/F11)。(例如方法Withdraw()
)。这有什么原因吗?
Department dep = new Department(1000);
Thread t = new Thread(new ThreadStart(dep.DoTransactions)); //set up 1000 threads.
class Department
{
private Object thisLock = new Object();
int salary = 10000;
int Withdraw(int amount)
{
lock (thisLock)
{
if (salary >= amount)
{
salary = salary - amount;
return amount;
}
}
}