質問: new Object(); public void Withdraw(decimal amount) { lock (thisLock) { if (amount > balance) { throw new Exception("Insufficient funds"); } balance -= amount; } } } ``` 上記の例では、 `lock` キーワードとともにオブジェクト `thisLock` が使用されています。なぜこれが必要ですか?それは他の目的を持っていないようです。なぜ単に `lock` というキーワードだけではないのですか?
回答: ロックに使用されるオブジェクトは冗長ではありません。オブジェクトはトークンとして機能し、単純な同期プロトコルを実装するために使用されます。ロックを保持している人は、ロックされたコードにアクセスできます。ロックが解除されるまで待つ必要があります。 オブジェクトがなければ、異なるトークンを持つことはできず、すべての同期は単一の内部トークンに依存します。それはあまり効果的ではありません。