Уроки по параллельному программированию C#
В этом учебном пособии я познакомлю вас с параллельным программированием с использованием новых возможностей, предоставляемых платформой .NET framework версии 4.0. Мы рассмотрим использование различных частей фреймворка, включая параллельную библиотеку задач и параллельную версию интегрированного в язык запроса, известную как PLINQ. Чтобы следовать образцу кода в статьях, вам нужно будет освоиться с C#, объектно-ориентированным программированием и LINQ.
Чтобы скомпилировать образцы и запустить их, вам нужно будет установить .NET framework 4.0. В идеале вы должны скомпилировать и запустить образцы из Visual Studio. Если это недоступно , вы можете использовать альтернативный инструмент разработки, предназначенный для платформы .NET framework 4.0. Наконец, хотя это и не обязательно для выполнения примера кода, вам понадобится компьютер с несколькими ядрами, чтобы увидеть эффекты параллелизма.
Почему требуется параллельное программирование?
В первые годы существования персональных компьютеров машины создавались с одним центральным процессором (CPU). Некоторые процессоры могут работать с разной тактовой частотой, а некоторые могут быть разогнаны, чтобы улучшить их производительность. По мере появления новых, улучшенных конструкций процессоров тактовая частота процессоров резко возрастала.
Между началом 1990-х и серединой 2000-х годов тактовая частота процессора в персональном компьютере увеличилась с 33 мегагерц до 3,5 гигагерц. Уже одно это означает увеличение производительности более чем в сто раз. Кроме того, каждая новая модель процессора вводила дополнительные улучшения эффективности и дополнительные технологии, чтобы сделать повышение скорости еще большим. Например, многие процессоры в 1990 году изначально не могли выполнять операции с плавающей запятой, поэтому арифметика с плавающей запятой была во много раз медленнее, чем процессоры с этим средством, работающим с той же тактовой частотой.
Тогда если вы хотели, чтобы ваша программа работала быстрее, вы могли либо оптимизировать ее, либо купить лучшее оборудование. Компании часто используют последний подход, поскольку он, как правило, более экономичен; цена нового компьютера может быть меньше, чем плата за один-два дня работы программиста.
С 2005 года рост тактовой частоты процессора застопорился. Одна из ключевых причин заключается в том, что более быстрые процессоры производят во много раз больше тепла, чем более медленные. Рассеивать это тепло, чтобы поддерживать работу процессора в безопасном температурном диапазоне, гораздо сложнее. Есть и другие причины, связанные с конструкцией процессоров и количеством дополнительной мощности, необходимой для более высоких тактовых частот.
Решение, которое выбрали основные разработчики процессоров, состоит в том, чтобы отойти от попыток увеличить тактовую частоту и вместо этого сосредоточиться на добавлении большего количества процессорных ядер. Каждое ядро действует как один процессор, который может работать. Если у вас есть два ядра в вашем процессоре, он может обрабатывать две независимые задачи параллельно без неэффективности переключения задач. По мере увеличения числа ядер увеличивается также объем кода или данных, которые могут обрабатываться параллельно, что приводит к общему повышению производительности без изменения тактовой частоты.
На момент написания статьи становится все труднее приобрести новый компьютер, который имеет процессор только с одним ядром. Настольные компьютеры обычно имеют четырехъядерные или шестиядерные процессоры с технологией, которая дает восемь или двенадцать виртуальных процессоров. Ноутбуки обычно включают в себя по крайней мере двухъядерный процессор и часто включают в себя четыре ядра. Нетбуки, предназначенные для просмотра веб-страниц и менее мощные, чем ноутбуки, часто включают в себя также двухъядерные процессоры. Даже мобильные телефоны имеют более одного ядра. Эта тенденция, вероятно, будет продолжаться, и такие компании, как Intel, указывают, что будущие процессоры могут включать в себя тысячу ядер.
- Урок 1. Введение в параллельное программирование C#
- Урок 2. Параллельный цикл for C#
- Урок 3. Параллельный Цикл ForEach
- Урок 4. Прерывание параллельных циклов
- Урок 5. Синхронизация в параллельных циклах C#
- Урок 6. Исключения и параллельные циклы C#
- Урок 7. Использование Parallel.Invoke C#
- Урок 8. Создание параллельных задач C#
- Урок 9. Ожидание завершения параллельных задач C#
- Урок 10. Получение результатов от параллельных задач C#
- Урок 11. Задачи продолжения C#
- Урок 12. Вложенные задачи C#
- Урок 13. Дочерние задачи C#
- Урок 14. Отмена задачи C#
- Урок 15. Параллельный LINQ
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.