使方法不可重入的技术

问题描述 投票:0回答:1

我有一个 ASP.NET Core 应用程序,其

async
方法具有类似这样的签名。

public async Task RunAsync()
{
    // ...
}

我担心这个方法同时由多个线程运行。

看起来我可以使用

lock
SemaphoreSlim
。有人可以帮助解释这些选项,让我可以在两者之间进行选择吗?

另外,我的方法

async
这一事实是否会影响决策?

c# multithreading asp.net-core .net-core semaphore
1个回答
0
投票

所以,我不知道这两种方法如何工作的所有细节,但我发现你不能在

await
中使用
lock
。因此,尽管
lock
似乎有一些优势,但就我而言,只有
SemaphoreSlim
才有效。

© www.soinside.com 2019 - 2024. All rights reserved.