Страницы

Поиск по вопросам

четверг, 21 февраля 2019 г.

Один поток на action [закрыт]

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


Ответ

Вы просто не совсем правильно поняли мысль, котору пытался донести автор статьи. Он не пытался сказать, что один конкретный метод Action не может выполняться в нескольких потоках - ведь достаточно очевидно, что это не так.
Если у вас пришел десяток одновременных HTTP-запросов на один и тот же Action - то это Action будет выполняться одновременно в 10 разных потоках. Никаких блокировок там нет.
Автор статьи на хабре имел ввиду, что один конкретный запрос - один конкретный вызов Action для обработки конкретного запроса - будет выполняться одним конкретным рабочим потоком, к которому при этом будет привязан HttpContext этого самого запроса.

Комментариев нет:

Отправить комментарий