Введение

Параллелизм является понятием многократных вещей, происходящих одновременно. С быстрым увеличением многожильного CPUs и реализацией, что число ядер в каждом процессоре только увеличится, разработчикам программного обеспечения нужны новые способы использовать в своих интересах их. Несмотря на то, что операционные системы как OS X и iOS способны к выполнению многократных программ параллельно, большинства тех программ, выполненных в фоновом режиме, и выполняют задачи, требующие небольшого непрерывного процессорного времени. Это - текущее приоритетное приложение, и привлекающее внимание пользователя и заставляющее компьютер напряженно трудиться. Если приложение имеет большую работу, чтобы сделать, но сохраняет только часть доступных ядер занятой, те дополнительные ресурсы обработки потрачены впустую.

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

И OS X и iOS принимают более асинхронный подход к выполнению параллельных задач, чем традиционно найдено в основанных на потоке системах и приложениях. Вместо того, чтобы создавать потоки непосредственно, приложения должны только определить определенные задачи и затем позволить системе выполнить их. Позволяя системе управлять потоками, приложения получают уровень масштабируемости, не возможной с необработанными потоками. Разработчики приложений также получают более простую и более эффективную модель программирования.

Этот документ описывает метод и технологии, которые необходимо использовать для реализации параллелизма в приложениях. Технологии, описанные в этом документе, доступны и в OS X и в iOS.

Организация этого документа

Этот документ содержит следующие главы:

Этот документ также включает глоссарий, определяющий соответствующие условия.

Примечание о терминологии

Перед вводом в дискуссию о параллелизме необходимо определить некоторую соответствующую терминологию для предотвращения беспорядка. Разработчики, которые более знакомы с системами UNIX или более старыми технологиями OS X, могут счесть условия «задачей», «процессом» и «потоком» используемый несколько по-другому в этом документе. Этот документ использует эти термины следующим образом:

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

См. также

Этот документ фокусируется на предпочтительных технологиях для реализации параллелизма в Ваших приложениях и не касается использования потоков. При необходимости в информации об использовании потоков и других связанных с потоком технологий см. Руководство по программированию Поточной обработки.