在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
语句来实现类似的功能。