我正在开发一个应用程序,其中每个端点都使用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处理请求是不变的。
哪个用户先点击这个动作方法,他将注册餐厅,同时第二个用户将等待,直到第一个用户等待完成。