Основы многопоточной обработки


Основы многопоточной обработки

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

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

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

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

Например, в среде Cocoa Touch каркас Foundation, содержащий все основные классы, необходимые для программирования на Objective-C, в том числе классы NSString и NSArray, обычно считается потокобезопасным. В то же время каркас UIKit, содержащий специальные классы для построения приложений с графическим интерфейсом пользователя, в том числе классы UIApplication, UlView и все их подклассы, по большей части не считается поток о безопасным.
  • Дата: 31-12-2014, 21:11

Предыдущие статьи сайта:

Понравилась статья? Ставь лайки, рассказывай друзьям!



Отзывы о статье: Основы многопоточной обработки

Технологии, секреты и фишки Apple: Iphone, iPad, iPod