Все дело в том, что выполнение потоков весьма непредсказуемо. Множество потоков например блокируются при В/В, что отслеживает планировщик и позволяет "параллельно" выполнять их ценой некоторого ослабления гарантий что они отрабатывают внешние события за минимально возможное время. Это вполне терпимо в реальных условиях эксплуатации и позволяет экономить ресурсы системы и значительно снизить стоимость вычислительной системы. Вариант с бесконечным количеством потоков же по своей сути - игра в тетрис одного человека за счет всех вычислительных ресурсов всех компьютеров мира. При реальном же использовании на сегодняшний день все ядра загружены неполно и неравномерно, кроме отдельных задач, требующих все ресурсы системы. В силу своей работы могу привести только один яркий пример - моделирование методом конечных элементов - по сути, решение достаточно большого количества систем уравнений. При этом некоторый прирост производительности достижим с использованием многоядерности, но все же в основном упирается в производительность 1 ядра, что конечно не мешает запустить решение нескольких несвязанных между собой задач если это конечно требуется. Использование различных В/В и ОЗУ потребуют применения средств обмена данными (ведь программы не выполняются сами по себе в общем случае, а предполагают некоторое информационное окружение) между параллельно выполняющимися потоками и приведут к снижению производительности. Я конечно не эксперт в подобных "предсказаниях", но ИМХО все зависит от задач и требует специализированных решений в каждом конкретном случае, как и делается сегодня, а в большинстве случаев все так, как и описал.
|