Всем привет, привык постоянно пытаться найти место для использования многопоточности/конкурентности в своем коде, но в последнее время это начало казаться не слишком нужным, даже какой-то опцией по большому счету. Ведь если сложность алгоритма O(n^2) или O(C^n) (да даже O(n)), то какая разница во сколько раз он будет быстрее за счет параллельности? Иное дело, если ядер или параллельных потоков будет весомо много. Ну допустим что у меня есть железо с 2000-и потенциальных ядер (на них 2к потенциальных распараллеленных потоков и это все равно константа, но уже неплохая, чтобы считаться со сложностью при некоторых n), вот только вопрос, а будут ли все 2к потоков работать? Тут возникают подозрения уже с 16-ю потоками (когда скорость увеличивается не в ~16 раз, а меньше), возможно ОС или планировщик или шины в системе не справляются с таким кол-вом потоков (не могут их контролировать), есть ли такая проблема и как ее можно решить? Существует ли аналог Мура на ядра, чтобы можно было уверенно сказать, что при огромном кол-ве ядер скорость работы распараллеленного алгоритма будет снижаться на порядок?