在 C# 中,lock 关键字用于确保在多线程环境中,同一时间只有一个线程可以访问特定的代码块,从而避免竞争条件和数据不一致的问题。lock 语句通过获取指定对象的互斥锁来实现线程同步。
基本语法
lock (lockObject)
{
// 临界区代码
}
lockObject 是一个引用类型的对象,通常是一个专用的对象实例,用于作为锁的标识。
临界区代码是需要在同一时间只允许一个线程执行的代码。
使用示例
using System;
using System.Threading;
class Program
{
private static readonly object _lock = new object();
private static int _counter = 0;
static void Main(string[] args)
{
for (int i = 0; i < 10; i++)
{
Thread thread = new Thread(IncrementCounter);
thread.Start();
}
Thread.Sleep(1000); // 等待所有线程完成
Console.WriteLine($"Final Counter Value: {_counter}");
}
static void IncrementCounter()
{
for (int i = 0; i < 1000; i++)
{
lock (_lock)
{
_counter++;
}
}
}
}
解释
_lock 对象

最低0.47元/天 解锁文章
1821

被折叠的 条评论
为什么被折叠?



