Читал на хабре статью про async/await и наткнулся на следующую строчку:
Несмотря на то, что в ASP.NET нет выделенного UI потока, код в
action-ах контроллеров не может выполняться более чем одним рабочим
потоком одновременно.
Исходя из этой строчки у меня возникают вопросы:
Зачем так ограничивать action?
Как это реализовано внутрях? lock в ActionInvoker'е?
Ответ
Вы просто не совсем правильно поняли мысль, котору пытался донести автор статьи. Он не пытался сказать, что один конкретный метод Action не может выполняться в нескольких потоках - ведь достаточно очевидно, что это не так.
Если у вас пришел десяток одновременных HTTP-запросов на один и тот же Action - то это Action будет выполняться одновременно в 10 разных потоках. Никаких блокировок там нет.
Автор статьи на хабре имел ввиду, что один конкретный запрос - один конкретный вызов Action для обработки конкретного запроса - будет выполняться одним конкретным рабочим потоком, к которому при этом будет привязан HttpContext этого самого запроса.
Комментариев нет:
Отправить комментарий