Lock 、 Monitor 、SemaphoreSlim 以及await一起
Lock 、 Monitor 、SemaphoreSlim 以及await一起
Mutex
这个最早见到,见到它时还是使用C++,他可以用在进程间,系统内,系统只能跑一个exe的时候。
Lock
这个C#后面使用频率最高,没有什么可说的,补上一句其实他是Monitor的语法糖
lock(obj)
{
// 临界区代码
}
其实等价于
Monitor.Enter(obj);
try
{
// 临界区代码
}
finally
{
Monitor.Exit(obj);
}
我想记录的重点--异步方法内无法使用Monitor 和lock 所以才有了SemaphoreSlim
System.Threading.SemaphoreSlim slimlock = new SemaphoreSlim(1, 1);//注意理解这里的 1 1
await slimlock.WaitAsync();
try
{
await Task.Delay(3000);
}
finally
{
slimlock.Release();
}

浙公网安备 33010602011771号