@RedRus

При каких нагрузках не обойтсь без использования неблокирующих подходов (использовать только потоки и процессы ОС)?

Понятно, что я не говорю о точных цифрах. Меня волнует, если проект имеет солидную нагрузку (возьмем, например, "вконтакте", "одноклассники", "твиттер") может ли он существовать (и возможно сейчас существует), только на таких подходах к многозадачности, как потоки и процессы? Естественно, в счет не берется используемые внутри проекта nginx, redis и т.п. подобные инструменты, использующие неблокирующий код. Речь только о самом приложении. Приложение в основном будет I/O bound (будем считать, что речь о веб-приложении типа социальной сети).

В университете проходим тему построения высоконагруженных систем. Хотел бы узнать у знающих людей, при каких нагрузках становиться необходимым переходить на различные неблокирующие технологии (легкие потоки, event loop-ы) и уже нельзя обходится обычными потоками операционной системы? Или же можно обойтись вообще без технологий "легких потоков" для того, чтобы строить достаточно сильно нагруженные проекты?

Я не могу понять, зачем нужен такой код, который пишется на "легких потоках". Разве это не переизобретение велосипеда, когда уже есть потоки операционной системы? Я знаю, что потоки вызывают переключения контекста, что создает накладные расходы. Но эти накладные расходы не выглядят слишком большими (максимум я видел оценку в 30 микросекунд на переключение), к тому же у переключения "легких потоков" тоже должны быть накладные расходы.

P.S. Я в принципе понимаю разницы, как я думаю, между "легкими потоками", event loop-ами и различными неблокирующими технологиями. Возможно, где-то я выражаюсь не совсем корректно. Прошу меня извинить. Надеюсь все-таки понятно о чем я говорю.

С уважением,
Дмитрий
  • Вопрос задан
  • 324 просмотра
Пригласить эксперта
Ответы на вопрос 1
@aol-nnov
тыц и её отечественный собрат (там ссылки)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы