小编Анд*_*ков的帖子

Lock 和 SemaphoreSlim 使用 async/await 的区别

当使用 async/await 关键字访问 C# 中的临界区时,通常不建议使用lock关键字或Monitor (为什么我不能在 lock 语句的主体中使用 'await' 运算符?),因为它会在这种情况下引入死锁其中锁定关键部分的线程可能不可用。

一般方法是使用SemaphoreSlim类。

我的问题是,既然SemaphoreSlim(1,1)和 lock 在功能上是相同的,为什么使用一个可以,但另一个会引入死锁?

是因为 SemaphoreSlim 可以从任何线程释放,而锁则由锁定它的线程独占“拥有”吗?

c# multithreading locking async-await

11
推荐指数
1
解决办法
4668
查看次数

标签 统计

async-await ×1

c# ×1

locking ×1

multithreading ×1