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();
            }
posted @ 2025-07-30 10:29  stweily  阅读(8)  评论(0)    收藏  举报