闽公网安备 35020302035485号
3.更好的错误处理:异常会被安全处理,确保锁始终被释放。
using System;
using System.Threading;
using System.Threading.Tasks;
class Program
{
// 定义一个共享锁对象
private static readonly Lock myLock = new Lock();
// 共享资源
private static int sharedResource = 0;
// 堆代码 duidaima.com
static async Task Main(string[] args)
{
// 模拟多个任务访问共享资源
var mytask1 = Task.Run(() => AccessSharedResource("任务 1"));
var mytask2 = Task.Run(() => AccessSharedResource("任务 2"));
// 等待两个任务完成
await Task.WhenAll(mytask1, mytask2);
}
static void AccessSharedResource(string taskName)
{
// 使用作用域锁同步访问
using (myLock.EnterScope())
{
Console.WriteLine($"{taskName} 进入锁。");
// 安全地访问和修改共享资源
sharedResource++;
Console.WriteLine($"{taskName} 将共享资源增至 {sharedResource}。");
// 模拟一些工作
Thread.Sleep(1000);
Console.WriteLine($"{taskName} 离开锁。");
}
}
}
工作原理
lock (lockObject)
{
// 关键区
}
1.需要手动匹配 Monitor.Enter() 和 Monitor.Exit()。lock (lockObject)
{
// 关键区
}
1.自动释放锁。2.代码更简洁,错误更少。
3.想要减少重复代码并使代码更易读。