c# 数据共享 上锁 示例
时间: 2024-12-11 11:07:54 浏览: 5
在 C# 中,为了防止数据并发修改导致的问题,特别是在多线程环境下,可以使用 `Monitor` 类或者 `lock` 关键字来实现线程同步,确保数据在任何时候都只有一个线程可以访问(即上锁)。这里有一个简单的例子,假设我们有一个静态类 `SharedData` 存储需要保护的数据:
```csharp
public static class SharedData
{
private static int sharedValue = 0;
private static object _syncLock = new object();
public static void Increment()
{
lock (_syncLock)
{
sharedValue++;
}
}
public static void Decrement()
{
lock (_syncLock)
{
sharedValue--;
}
}
public static int GetValue()
{
return sharedValue;
}
}
// 在另一个线程中使用
public void WorkerThread()
{
lock (SharedData._syncLock)
{
Console.WriteLine("Incrementing...");
SharedData.Increment();
Console.WriteLine($"Current value: {SharedData.GetValue()}");
}
}
```
在这个例子中,`_syncLock` 对象作为锁,保证在同一时刻只有一个线程能够执行 `Increment()` 或 `Decrement()` 方法。其他线程在尝试修改数据前,必须先获取到锁。
阅读全文