NET 5 Web API 多线程并发控制:使用 SemaphoreSlim 实现接口单次执行
在.NET 5中,可以使用SemaphoreSlim类来实现在多线程中让一个接口多次请求中只会一次一次的执行的功能。SemaphoreSlim类是一个轻量级的同步原语,可以用于控制同时访问资源的线程数量。以下是实现的步骤:
- 在Web API的控制器中创建一个SemaphoreSlim对象,用于控制接口的并发访问:
private static SemaphoreSlim semaphore = new SemaphoreSlim(1, 1);
- 在接口的方法中使用SemaphoreSlim对象的WaitAsync()方法来获取锁,保证只有一个线程能够访问接口的代码块:
public async Task<IActionResult> MyApiMethod()
{
await semaphore.WaitAsync();
try
{
// 接口的代码块
}
finally
{
semaphore.Release();
}
}
- 在接口的代码块中,只有一个线程能够执行,其他线程会等待锁释放后再次尝试获取锁执行。
通过以上步骤,就可以实现在多线程中让一个接口多次请求中只会一次一次的执行的功能。
原文地址: https://www.cveoy.top/t/topic/f1vA 著作权归作者所有。请勿转载和采集!