При каких нагрузках не обойтсь без использования неблокирующих подходов (использовать только потоки и процессы ОС)?
Понятно, что я не говорю о точных цифрах. Меня волнует, если проект имеет солидную нагрузку (возьмем, например, "вконтакте", "одноклассники", "твиттер") может ли он существовать (и возможно сейчас существует), только на таких подходах к многозадачности, как потоки и процессы? Естественно, в счет не берется используемые внутри проекта nginx, redis и т.п. подобные инструменты, использующие неблокирующий код. Речь только о самом приложении. Приложение в основном будет I/O bound (будем считать, что речь о веб-приложении типа социальной сети).
В университете проходим тему построения высоконагруженных систем. Хотел бы узнать у знающих людей, при каких нагрузках становиться необходимым переходить на различные неблокирующие технологии (легкие потоки, event loop-ы) и уже нельзя обходится обычными потоками операционной системы? Или же можно обойтись вообще без технологий "легких потоков" для того, чтобы строить достаточно сильно нагруженные проекты?
Я не могу понять, зачем нужен такой код, который пишется на "легких потоках". Разве это не переизобретение велосипеда, когда уже есть потоки операционной системы? Я знаю, что потоки вызывают переключения контекста, что создает накладные расходы. Но эти накладные расходы не выглядят слишком большими (максимум я видел оценку в 30 микросекунд на переключение), к тому же у переключения "легких потоков" тоже должны быть накладные расходы.
P.S. Я в принципе понимаю разницы, как я думаю, между "легкими потоками", event loop-ами и различными неблокирующими технологиями. Возможно, где-то я выражаюсь не совсем корректно. Прошу меня извинить. Надеюсь все-таки понятно о чем я говорю.