Async/Await如何同时处理来自多个用户的同一API端点的多个调用



我正在开发一个应用程序,其中每个端点都使用async/await。我的问题是async/await如何在同一API端点上同时处理多个请求。例如,如果我有一个保存用户记录的端点,并且该端点同时被两个不同的用户访问,将会发生什么?有人能解释一下吗?

这里是示例代码,我在这里注册一个餐厅使用async/await:

[HttpPost]
[Route("RegisterRestaurant")]
public async Task<IActionResult> RegisterRestaurant([FromBody] RegisterRequestDTO registerModel)
{
var response = await _uow.UserRepository.RegisterRestaurant(new DTO.ResponseDTO.GenericResponseDTO<RegisterRequestDTO> { Data = registerModel });
return Ok(response);
}

这段代码一切正常。但是,如果它同时受到来自多个地方的多个用户的访问,会发生什么呢?

我的问题是async/await如何在同一API端点上同时处理多个请求。例如,如果我有一个保存用户记录的端点,并且该端点同时被两个不同的用户访问,将会发生什么?有人能解释一下吗?

这实际上与ASP如何。. NET works, notasync/await.

当有新的请求进来时,ASP。. NET从线程池中获取一个线程,构造任何必要的实例(例如,控制器的实例),并为该请求执行处理程序。因此,默认情况下,每个请求都是独立的,除非您的代码显式地使用static或单例实例。

async/await允许线程返回ASP。. NET线程池更快,但ASP. NET的核心机制。. NET处理请求是不变的。

哪个用户先点击这个动作方法,他将注册餐厅,同时第二个用户将等待,直到第一个用户等待完成。