В настоящее время я анализирую плюсы и минусы написания сервера с использованием многопоточной модели или модели, управляемой событиями.Я уже знаю много минусов многопоточной модели (плохо масштабируется из-за накладных расходов при переключении контекста, ограничений виртуальной памяти и т. Д.), Но я наткнулся на еще один в своем анализе и хотел бы убедиться в правильности моего понимания потоков.
Если у меня 5 потоков, 1 из которых выполняет работу (не блокируется), 4 из которых блокируются в ожидании ввода-вывода (например, ожидая данных из сокета), не время процессораэти 4 потока, по сути, потрачены впустую, так как на самом деле работа не выполняется (при условии, что данные не поступают)?Временной интервал, данный этим 4 заблокированным потокам, отнимает время у 1 потока, фактически выполняющего работу, верно?
В этом случае я прямо говорю, что сокет является блокирующим.