私はC#の初心者です。マルチスレッドのサンプルを見ています。
メソッド へのマルチスレッド呼び出しを設定しましたDoTransactions()
。これにより、 として乱数が生成され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;
}
}
}