паттерны параллельного программирования;какой шаблон выбрать !? - PullRequest
1 голос
/ 20 марта 2012

ссылается на электронную книгу шаблоны для параллельного программирования . Я читаю электронную книгу и узнаю много нового. но мне интересно, какой шаблон выбрать.

например, параллельный класс, класс задачи, PLINQ, класс ThreadPool, ...

Есть ли какой-нибудь ресурс, который предоставляет больше информации о параллельном программировании в .net 4?

Ответы [ 3 ]

1 голос
/ 22 марта 2012

Task и Parallel - это не шаблоны, это классы или пространства имен.Эти классы могут использоваться для реализации различных общих параллельных шаблонов.В некоторых случаях для этого требуется только один класс, например, параллелизм данных с Parallel.ForEach.В других, различные классы должны использоваться совместно для разработки решения, например, для реализации конвейера с Tasks и BlockingCollection.

ThreadPool может фактически рассматриваться как деталь реализации, на которой основана библиотека параллельных задач в .NET 4встроенный.Задачи представляют собой абстракцию над пулом потоков, позволяющую разработчикам определять работу как Задачи и иметь ручку выполнения .NET, максимально эффективно планирующую работу с помощью аппаратно-независимого и масштабируемого способа.

Шаблоны, обсуждаемые в книге, не рассматриваютсяОни действительно применимы на уровне приложений, они больше похожи на шаблоны проектирования, описанные «Бандой четырех».Обычно приложение состоит из множества строк кода, которые используют множество различных шаблонов.Например, приложение для обработки изображений может использовать шаблон Model-View-Controller для разделения задач представления (GUI) и модели.Сама модель может использовать конвейер и параллелизм данных.Вы можете увидеть именно такой пример в главе конвейеров книги.

1 голос
/ 21 марта 2012

Различные шаблоны предназначены для разных типов применения.

Класс задач: когда параллельные задания, которые вы хотите выполнить, не зависят друг от друга и порядок выполнения не имеет значения.Рабочие места могут быть нерегулярного размера.Например, производство автомобилей.Не имеет значения, какие детали (шина, двигатель, двери и т. Д.) Производятся в каком порядке.Вы заботитесь только о том, чтобы автомобиль был изготовлен в конце, и вы делаете его параллельно, чтобы завершить его как можно быстрее.

Параллельный класс: Этот тип предназначен для задач, которые являются независимыми и похожими, но задачипочти равного размера.Например: простой цикл for, где итерации независимы.

Класс Threadpool: это в некоторой степени комбинация двух вышеупомянутых, за исключением того, что между потоками может существовать определенный уровень зависимостей, которыми может управлять разработчик (например, путем выполнения потоков в некотором порядке ИЛИ выполнения на основе потоковна результаты / условия, полученные из других потоков и т. д.).

Обратите внимание, что выбор параллельного шаблона не является исключительно вашим!В большинстве случаев один вынужден выбирать одно или другое в зависимости от типа приложения, которое внедряется.

0 голосов
/ 22 марта 2012

есть официальная документация в MSDN , объясняющая параллельные шаблоны и раздел (Выбор правильного шаблона).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...