Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Использование многоядерности


Автор: Karrde 13.5.2011, 22:58
Появилась интересная(а, может, и не очень) мысль. Допустим, есть сервак с 8-мя ядрами. Надо выполнять параллельно несколько одинаковых задач(иногда 1, а может, и 4). Причем каждая из задач - тоже в свою очередь может быть распараллелена с помощью Parallel.For. Как в таком случае лучше поступить, чтобы в любом случае по максимуму использовать все ядра? если запустить сразу несколько потоков, в каждом из которых будет по Parallel.For, автоматом будут распределяться ресурсы(типа 4 ядра для первой задачи, 4-для второй), или придется как-то вручную регулировать? 

Автор: Экскалупатор 13.5.2011, 23:39
смотря что ты собираешься выполнять параллельно, некоторые задачи нельзя распараллелить.

Автор: Karrde 14.5.2011, 16:51
То, что можно разбить на не связанные между собой блоки, всегда распараллеливается)) у меня задачи именно такие

Автор: neutrino 15.5.2011, 12:41
Зависит от качества и количества задач. Может быть такое, что пока выполняется задача 1 на ядре 0, может выполниться 64 задачи на другом ядре. Поэтому для полной утилизации мультиядерного ЦП надо смотреть что за задачи и как их параллелить. Thread.Affinity.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)