Трудно прочитать ваш вопрос, не чувствуя, что вы неправильно поняли, как работают веб-серверы и как работают async/await
и темы. Чтобы упростить задачу, просто подумайте об этом так: async/await
почти всегда полезно использовать при запросе внешнего ресурса (например, базы данных, веб-службы / API, системного файла и т. Д. c). Если вы следуете этому простому правилу, вам не нужно слишком глубоко думать о каждой ситуации.
Однако, когда вы читаете и изучаете больше по этим предметам и получаете хороший опыт, глубокое мышление становится необходимым в каждом случае, потому что всегда есть исключения из любого правила, поэтому существуют сценарии ios, в которых накладные расходы на использование потоков async/await
& могут превзойти их преимущества. Например, Microsoft решила не использовать его для ведения журнала в ASP. Net Core, и в исходном коде даже есть комментарий об этом.
В вашем случае веб-сервер использует гораздо больше потоков что вы, кажется, думаете, и по гораздо большим причинам, чем вы думаете. Также, когда поток не работает в ожидании чего-либо, он не может делать ничего другого. async/await
делает то, что они ie не извлекают поток из текущей ожидаемой задачи, поэтому поток может go вернуться в пул и сделать что-то еще. Когда ожидаемая задача завершена, поток (может быть другим потоком) извлекается из пула, чтобы продолжить работу. Кажется, вы в какой-то степени понимаете это, но, возможно, вы просто не знаете, что еще может делать поток в веб-сервере. Поверьте мне, есть много дел.
Наконец, помните, что потоки являются общими c работниками, они могут делать все что угодно. Веб-серверы могут иметь специализированные потоки для различных задач, но они делятся на две или три категории. Темы могут делать все что угодно в своей категории. Веб-серверы могут даже перемещать потоки в разные категории, когда это необходимо. Все это сделано для вас, поэтому вам не нужно думать об этом в большинстве случаев, и вы можете просто сосредоточиться на освобождении потоков, чтобы веб-сервер мог выполнять свою работу.