Skip to content

Latest commit

 

History

History
48 lines (29 loc) · 5.13 KB

File metadata and controls

48 lines (29 loc) · 5.13 KB

Thread (Поток)

История

Потоки POSIX

В конце 1980-х и начале 1990-х было несколько разных API, но в 1995 г. POSIX.1c стандартизовал потоки POSIX, позже это стало частью спецификаций SUSv3. В наше время многоядерные процессоры проникли даже в настольные ПК и смартфоны, так что даже у большинства машин есть низкоуровневая аппаратная поддержка, позволяющая им одновременно выполнять несколько потоков. В былые времена одновременное исполнение потоков на одноядерных ЦПУ было лишь впечатляюще изобретательной, но очень эффективной иллюзией.

Поток

Поток можно считать меньшей единицей выполнения приложения. Каждому приложению принадлежит минимум один поток, который называется основным (main thread). Этот поток запускается операционной системой, когда вызывается метод main() приложения; это происходит при старте приложения. Заметьте, что более-менее одно и то же происходит на всех поддерживаемых платформах — как работающих на мощных компьютерах, так и на устройствах под управлением Windows Phone с ограниченными вычислительными ресурсами.

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

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

Управление потоками необходимо чтобы:

  1. сделать приложение быстрым, предотвратить зависающий UI, реагировать на действия пользователей без задержки;
  2. параллельно (сconcurrent) обрабатывать данные;

❗ В однопоточном процессоре каждое ядро обрабатывает только один поток данных.

Hyper-Threading (HT) — это технология Intel, позволяет 1му физическому ядру обрабатывать два потока данных одновременно. Достигается за счет создания двух виртуальных (логических) ядер на базе одного физического.

Processor_Core

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

Thread

Posix Threads или Pthreads определяет набор типов и функций на Си.

Pthreads - самый низкий уровень управления потоками, доступные в приложении. Он дает почти прямой доступ к управлению потоками ядра OS. В swift эта билиотека обычно не используется из-за сложности и необходимости работы с указателями.

iOS SDK дает более простой способ управления потоками - class Thread.

let thread = Thread {
  // вычисления
}
thread.start()

Объект, отвечающий за управление очередью, называется диспетчером потока (thread’s dispatcher). Н/р: GCD


2.0.4.1 Process Theme | Back To iOSWiki Contents | 2.1 Algoritms Theme Folder