在C#中,synchronized
并不是一個關鍵字。你可能是將其與Java中的 synchronized
關鍵字混淆了。在C#中,我們使用 lock
語句來實現同步。
lock
語句用于確保代碼塊在同一時間只能由一個線程訪問。這有助于防止多線程應用程序中的數據不一致和競爭條件。
下面是一個使用 lock
語句的示例:
class Account
{
private readonly object _balanceLock = new object();
private decimal _balance;
public void Deposit(decimal amount)
{
lock (_balanceLock)
{
_balance += amount;
}
}
public void Withdraw(decimal amount)
{
lock (_balanceLock)
{
if (_balance >= amount)
_balance -= amount;
else
Console.WriteLine("Insufficient funds");
}
}
public decimal GetBalance()
{
lock (_balanceLock)
{
return _balance;
}
}
}
在這個示例中,我們定義了一個 Account
類,它有一個 _balance
字段,表示賬戶余額。為了確保在多線程環境下余額的正確性,我們使用 lock
語句來同步對 _balance
字段的訪問。
注意,我們使用了一個私有的 object
類型的變量 _balanceLock
作為鎖對象。這是一種常見的做法,因為它可以確保鎖對象不會被外部代碼修改,從而導致死鎖或其他同步問題。
總之,雖然C#中沒有 synchronized
關鍵字,但你可以使用 lock
語句來實現類似的功能。