Готовый перевод PATTERNS OF PARALLEL PROGRAMMING / ПАТТЕРНЫ ПАРАЛЛЕЛЬНОГО ПРОГРАММИРОВАНИЯ: Введение

Внимание! Этот перевод, возможно, ещё не готов, так как модераторы установили для него статус «перевод редактируется»

Паттерны везде, и в выпуске лучших советов по разработке программного обеспечения, и в помощи закладывания новых поколений разработчиков с актуальным знанием устоявшихся руководств по широкому кругу проблем. Паттерны представляют успешные (или, в случае антипаттернов - неуспешные ), воспроизводимые и общие решения, применяемые разработчиками снова и снова в частных архитектурных и программных областях. Со временем они проверяются и верные шаблоны обретают имена, структуру и возможные варианты, помогая в будущем распространять их применение и давать резкий толчок старт многим проектам.

Паттерны проявляются не только на макроуровне. Наряду с шаблонами проектирования, покрывающими архитектурную структуру или методологии, всплывают шаблоны кода и строительные блоки, представляющие типовые способы реализации некоторого механизма. Такие паттерны обычно откладываются в нашей психике, и мы кодируем каждый день, используя их, и даже не задумываемся об этом. Такие шаблоны представляют решения банальных задач, с которыми мы сталкиваемся постоянно.

Конечно, выявление хорошего паттерна происходит после многих успешных и провальных попыток решения. Поэтому в новых проблемных областях паттернам требуется некоторое время, чтобы завоевать репутацию. Сегодня подобная ситуация происходит в нашей индустрии с шаблонами параллельного программирования. Пока разработчики в высокопроизводительных вычислениях вынуждены были разрабатывать решения для суперкомпьютеров и кластеров десятилетиями, потребность такого опыта только недавно возникла в персональных вычислениях, когда многоядерные процессоры стали нормой для рядового пользователя. Поскольку мы движемся в многоядерную эру, уверенность в том, что все программное обеспечение написано с учетом максимального параллелизма и масштабируемости, становится решающей для будущего индустрии вычислений. Это делает шаблоны в области параллельных вычислений особо важными в этом самом будущем.

"В целом, "многоядерный" чип указывает на восемь и менее однородных ядер в одном микропроцессорном корпусе, в то время как "manycore"-чип содержит более восьми разнородных ядер в микропроцессорном корпусе. В "manycore" процессоре, все ядра совместно используют ресурсы и сервисы, включая доступ к памяти и диску, предоставляемый операционной системой." - The Manycore Shift, (Microsoft Corp., 2007)

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

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

Этот документ едва освещает асинхронность для масштабируемых, завязанных на I/O приложений, но сфокусирован в основном на приложениях, дающих нагрузку на CPU и балансирующих работу между CPU и I/O. Этот документ также не освещает F# в Visual Studio 2010, в котором есть языковая поддержка нескольких ключевых паттернов параллелизма.

Внимание! Этот перевод, возможно, ещё не готов.
Его статус: перевод редактируется

Переведено на Нотабеноиде
http://notabenoid.org/book/16789/55187

Переводчики: vzhik

Настройки

Готово:

100.00% КП = 1.0