| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .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. |