Skip to content

Latest commit

 

History

History
executable file
·
18 lines (13 loc) · 1.65 KB

File metadata and controls

executable file
·
18 lines (13 loc) · 1.65 KB

RunLoop - цикл исполнения

RunLoop - это объект-цикл, который функционирует в рамках потока (thread) и на каждом цикле проверяет поступление событий от источников, на которые подписан. Также RunLoop генерирует уведомления об изменении собственного состояния. Можно создать Обсервер, который будет получать данные уведомления. Основная цель RunLoop - нагружать поток работой, когда работа есть, и отправлять в сон, когда задач нет.

RunLoop существует в любом потоке, но по умолчанию активирован только в главном (main thread). В дочерних потоках его необходимо активировать самостоятельно. RunLoop Имеет две реализации

  • RunLoop из Foundation (написан на Objective-C)
  • CFRunLoop из CoreFoundation (написан на C)

Типы источников событий

Каждый цикл RunLoop проверяет поступление событий от следующих источников:

  • Input - источники асинхронных событий, например сообщения от других потоков или процессов
    • Port
    • Custom Source
    • performSelector
  • Timer - таймеры, источники синхронных событий