1. Предисловие
Недавно я снова брал интервью и снова просмотрел многопоточное, надеясь углубить мое понимание многопоточного.
1. Что такое процесс?
1). Чтобы понять потоки, мы должны сначала понять процесс. С точки зрения непрофессионала, процесс - это приложение, работающее в системе.
2). Каждый поток существует независимо и работает в своем выделенном и защищенном пространстве памяти.
3). Например, при открытии системы QQ или XCODE будут открыты два процесса отдельно, как показано на рисунке:
4) Мы можем просмотреть процессы, включенные в системе Mac, через «Монитор деятельности».
2. Что такое поток?
1). Процесс должен иметь потоки для выполнения задач, то есть процесс должен иметь хотя бы один поток.
2). Потоки являются основной единицей выполнения процесса, и все задачи процесса (программа) выполняются в потоке.
3). Например, использование Kugou для воспроизведения музыки и использования Thunder для загрузки фильмов требуется, чтобы работать в ветке, как показано на рисунке:
3. Что такое нить сериал?
1). Поток выполняется последовательно (последовательно выполняется), что означает, что поток может выполнять только одну задачу в одно и то же время.
2). Схема серийного выполнения, такая как один поток загрузки 3 файлов (файлы a, b, c)
4. Что такое многопоточная?
1). В процессе можно открыть несколько потоков, и каждый поток может выполнять различные задачи одновременно (одновременно).
2). Список взаимоотношений: процесс ----> мастерская; Тема ----> Работники мастерской
3). Многопоточная диаграмма, такая как открытие 3 потоков одновременно для загрузки 3 файлов (файлы a, b, c)
5. Многопользовательский принцип
1). В то же время процессор может выполнять только один поток, и работает только один поток (выполнение).
2). Многопоточное параллельное (одновременное) выполнение-это фактически процессоры быстро расписания (переключатели) между несколькими потоками.
3). Если ЦП запланирует достаточно быстро, это приведет к иллюзии многопоточного одновременного выполнения.
4). Недостатки многопоточности:
1. Каждый поток будет занимать определенное количество пространства памяти (по умолчанию: основной поток занимает 1 МБ, а детская нить занимает 512 КБ).
Если будет включено слишком много потоков, он займет много пространства памяти, что приведет к деградации производительности программы.
2. Чем больше потоков, чем больше накладных расходов резьбы планирования процессора (аналогично более заводским работникам, тем больше накладных расходов завода).
3. Сделайте программирование более сложным: например, многопоточная связь данных и обмен данными между несколькими потоками.
5). Преимущества многопоточного чтения:
1. может надлежащим образом повысить эффективность выполнения программы.
2. может надлежащим образом улучшить использование ресурсов (ЦП и использование памяти)
6. Что является главной темой?
1). Поток будет открыт по умолчанию после открытия программы iOS. Этот поток называется «Главный поток» или «Поток пользовательского интерфейса».
2). Основные функции основного потока:
1. Отображение/обновить интерфейс пользовательского интерфейса
2. Обработка событий пользовательского интерфейса (например, события клика, события прокрутки, события перетаскивания и т. Д.)
3). Примечания в основной ветке:
1. Не размещайте много времени в основной теме. Труто-потребляющие операции в основной потоке приведут к задержке программы.
7. Труто-потребляемая операция демо
1) демонстрация, работающая непосредственно в основной потоке
-(void) touchesbegan: (nsset <uitouch *> *) касается withEvent: (uievent *) event {// Получить текущий метод выполнения и текущий поток // № == Основное поток // номер! = Другие потоки, детские потоки и вторичные потоки NSLOG (@"%s ---%@", __ Func __, [nsthrak Операция пользовательского интерфейса для заикания [Self LaftimeOperation];}#Pragma Mark-Try-Contrying Operation- (void) LANGUTIONOPERATER {for (int i =; i <; i ++) {nslog (@"%d", i);}}2) Демонстрация, работающая в детской ветке
-(void) touchesbegan: (nsset <uitouch *> *) касается withEvent: (uievent *) event {// Получить текущий метод выполнения и текущий поток // номер == Основной поток // №! Детская поток для выполнения, не влияя на операцию пользовательского интерфейса [Self-SelectorInbackground: @Selector (давняя операция) с OboBject: nil];}#Pragma Mark-Try-Onsumment Operation- (void) LANGTICEOPeration {for (int i =; i <; i ++) {nslog (@"%d", i);}}}};Приведенный выше контент-это многопоточное знание iOS, представленное вам редактором. Я надеюсь, что это будет полезно для вас!