Многоядерные и многопроцессорные системы уже ни для кого не являются новостью, так как прогресс никогда не стоит на месте. В данном посте я хочу немного рассказать про набор расширений Parallel FX, а конкретно про PLINQ - механизм выполнения LINQ запросов на многоядерных системах. Отличия с точки зрения синтаксиса в LINQ и PLINQ минимальны, все что требуется от программиста - это обвернуть источник данных в IParallelEnumerable<T> с помощью расширения System.Linq.ParallelEnumerable.AsParallel. К примеру возьмем запрос:
var T = Dat.Where(x => x.Value == 5).Select(x => x);
для его распараллеливания следует внести следующие изменения:
var T = Dat.AsParallel().Where(x => x.Value == 5).Select(x => x);
Или же:
var T = from A in Dat.AsParallel() where A.Value == 5 select A;
Все! При выполнении запроса PLINQ сам организует запуск его частей на доступных процессорах.
Прелесть этой системы состоит в том, что от программиста вообще не требуется никаких знаний параллельного программирования, а затраты на ее внедрение - минимальны.
Ссылки:
http://en.wikipedia.org/wiki/Parallel_Extensions
http://msdn.microsoft.com/ru-ru/magazine/cc163329.aspx
Подписаться на:
Комментарии к сообщению (Atom)
Комментариев нет:
Отправить комментарий