Почему многопоточность так мало используется?
В основном потому:
- Многопоточность неприменима для большинства проблем (см. причину №3).
- Для значительного подмножества проблем, для которых применима многопоточность, выгоды от ее использования не настолько значительны, чтобы стоить дополнительных усилий по разработке.
- Для подмножества оставшихся сценариев использования многопоточность требует переосмысления способа решения проблемы, чтобы разбить ее на отдельные фрагменты, которые могут обрабатываться разными потоками, а результаты затем объединяться.
Помимо дополнительных усилий по разработке, это также добавляет дополнительные накладные расходы на решение, которые могут перевесить преимущества использования многопоточности.
- Ко всему вышесказанному следует добавить, что многопоточность дает программисту много веревок, на которых он может легко повеситься, поэтому он старается подходить к ней с осторожностью. Или не подходят, и в итоге вешаются.
- Наконец, существует небольшой, но важный набор проблем,— включая, например, машинное обучение и большие данные,— для которых многопоточность может быть полезна, но, вероятно, вытеснена многопроцессорными и облачными архитектурами.
Это требует той же работы по перепроектированию, о которой я говорил в #3 выше, но это происходит на более высоком логическом и системном уровне, чем многопоточность. Вместо нескольких потоков, работающих в одном процессе и общающихся друг с другом, вы получаете несколько процессов, которые, скорее всего, работают на разных экземплярах сервера (обычно на docker, иногда на виртуальных серверах), возможно, на разном серверном оборудовании, общающихся друг с другом по сети.
Многопоточность обычно полезна для решения двух типов задач:
Конечно, многие 3D-рендеринг является высоко параллелизуемым… и почти все компьютеры имеют специализированное оборудование GPU для выполнения этой задачи намного быстрее, чем это может сделать любой CPU.
На самом деле, многопоточность часто используется в пользовательских интерфейсах, а также в веб-серверах, которые сталкиваются с той же проблемой.
Comments