im использование задач параллельная библиотека в .net 4.0 Я хочу иметь возможность задавать задачу для каждого ядра независимо от других ядер. обычно в TPL, я создаю задачу, и я говорю ей, чтобы она работала параллельно, я не контролирую количество созданных потоков и не могу контролировать количество ядер для участия в параллельной задаче. Кроме того, я не могу указать каждому конкретному ядру другую задачу. Я хотел бы знать, как добиться этого в TPL, если это возможно.параллельное программирование в TPL
ответ
Как указывали другие, вы, вероятно, не хотите этого делать.
Существует библиотека ParallelExtensionsExtras на CodePlex, который имеет various task schedulers, один из которых является «нить на задачу» планировщика, а другой (LimitedConcurrencyLevelTaskScheduler
), что позволяет определить степень параллелизма.
Однако они не обеспечивают сродство нитей к определенному ядру. Вы должны были бы закодировать это самостоятельно.
TPL масштабирует степень параллелизма динамически, чтобы наиболее эффективно использовать все доступные процессоры. Если это проблема, TPL может быть не для вас.
Ближайшая вещь, о которой я знаю, это ParallelEnumerable.WithDegreesOfParallelism, которая устанавливает максимальное количество одновременно выполняемых задач, которые будут использоваться для обработки запроса.
Это не похоже на то, что соответствует вашему счету, однако, возможно, вам нужен мелкозернистый контроль, и в этом случае я бы рекомендовал напрямую использовать потоки.
так что если использовать threading am, я могу указать темы для ядер? – 2010-12-02 21:17:46
У меня нет контроля над количеством созданных потоков и я не могу контролировать количество ядер для участия в параллельной задаче.
По замыслу, цель TPL является то, что вы не должны сделки с этими вопросами. Настройка может быть очень сложной, TPL выполняет довольно хорошую работу.
Я только заметил, что существует способ контролировать степень параллелизма в TPL. Пример кода приведен ниже, который использует ParallelOptions для определения максимального параллелизма при параллельном выполнении цикла.
Это взято из статьи Ричарда Карра по адресу: Control Degree of Parallelism in TPL
ParallelOptions po = new ParallelOptions();
po.MaxDegreeOfParallelism = 2;
Parallel.For(0, 20, po, i =>
{
Console.WriteLine("{0} on Task {1}", i, Task.CurrentId);
});
- 1. Параллельное программирование с использованием TPL на WinForms
- 2. Параллельное и параллельное программирование
- 3. Параллельное программирование
- 4. Задачи и параллельное программирование ASP.Net
- 5. Параллельное программирование в Julia
- 6. Параллельное программирование в R
- 7. параллельное программирование в java
- 8. Является ли параллельное программирование таким же, как параллельное программирование?
- 9. Common Lisp Параллельное программирование
- 10. Параллельное программирование и недетерминизм
- 11. Параллельное программирование на C#
- 12. R - Параллельное программирование
- 13. Параллельное VS асинхронное программирование
- 14. Семафоры и параллельное программирование
- 15. Параллельное программирование с C#
- 16. Параллельное программирование. compute(), java
- 17. Параллельное программирование на Java
- 18. Параллельное динамическое программирование
- 19. Параллельное программирование на Java
- 20. Параллельное программирование и C++
- 21. Параллельное программирование в Windows Azure
- 22. Параллельное программирование тест в GO
- 23. Параллельное программирование на двоичном дереве
- 24. параллельное программирование для управления роботом
- 25. Java-параллельное программирование - синхронизирующий массив
- 26. Параллельное программирование для службы Windows
- 27. C# параллельное программирование, изменяющее xDocument
- 28. Процессы, потоки и параллельное программирование
- 29. C# .net 4 параллельное программирование
- 30. R параллельное программирование foreach сомнения
Так что вы хотите ... использовать TPL в основном эмулировать с помощью обычных потоков? – 2010-12-02 21:11:10