Ответы пользователя по тегу ASP.NET
  • Как работает пул потоков при ассинхронных запросах?

    @qandak
    Архитектор
    ... ждать окончания других запросов.


    Надо понимать, что пул как абстракция по своей сути подразумевает очередь и ожидание. Если метод логин ходит в базу на другой хост, который имеет на данный момент свои проблемы, ждать определенное время надо будет по-любому, независимо от состояния пула. Если это обычный логин с условным редисом - юзер не почувствует разницу, будь там 5 тысяч запросов или пятнадцать.

    Пул потоков виртуальной машины (CLR, JVM, etc.) или JIT - это виртуализация над пулом потоков ОС. ОС в свою очередь распределяет задачи с помощью своего планировщика на реальные потоки железа. В случае двухядерного ЦП с гипертредингом - 4. То есть, замечаем мы это или нет, ожидания и очереди есть всегда и везде.

    Что касается случая с контроллером запросов, тут всё зависит от фреймворка и конфигураций. Отклонить сразу, отклонить по таймауту, или врапить в виртуальный поток. У JVM был такой Project Loom, позволяющий создавать миллион потоков без ограничений ОС (включено в JDK начиная с версии 12).
    Ответ написан
    Комментировать