c# synchronized
时间: 2023-08-27 11:11:20 浏览: 268
c#文件同步
3星 · 编辑精心推荐
在 C# 中,可以使用 `lock` 关键字来实现线程同步。`lock` 关键字用于锁定代码块,确保同一时间只有一个线程可以执行该代码块。当一个线程获得了锁,其他线程就必须等待直到锁被释放。这种方式可以防止多个线程同时修改共享的数据,从而避免竞态条件和数据不一致的问题。
下面是一个简单的示例,展示了如何使用 `lock` 关键字来同步代码块:
```csharp
class Program
{
static object lockObject = new object();
static int counter = 0;
static void Main(string[] args)
{
Thread thread1 = new Thread(IncrementCounter);
Thread thread2 = new Thread(IncrementCounter);
thread1.Start();
thread2.Start();
thread1.Join();
thread2.Join();
Console.WriteLine("Counter: " + counter);
}
static void IncrementCounter()
{
for (int i = 0; i < 100000; i++)
{
lock (lockObject)
{
counter++;
}
}
}
}
```
在上面的示例中,`lockObject` 用作锁定对象,`counter` 是一个共享的计数器。两个线程同时执行 `IncrementCounter` 方法,但由于使用了 `lock` 关键字,每次只有一个线程能够进入 `lock` 代码块并修改 `counter` 的值。
请注意,在实际开发中,还有其他更高级的线程同步机制可供选择,如 `Monitor` 类、`Mutex`、`Semaphore` 等,具体使用哪种方式取决于具体的需求和场景。
阅读全文