我有一个 ASP.NET Core 应用程序,其
async
方法具有类似这样的签名。
public async Task RunAsync()
{
// ...
}
我担心这个方法同时由多个线程运行。
看起来我可以使用
lock
或SemaphoreSlim
。有人可以帮助解释这些选项,让我可以在两者之间进行选择吗?
另外,我的方法
async
这一事实是否会影响决策?
所以,我不知道这两种方法如何工作的所有细节,但我发现你不能在
await
中使用lock
。因此,尽管 lock
似乎有一些优势,但就我而言,只有 SemaphoreSlim
才有效。