Как на самом деле работает runloop - PullRequest
5 голосов
/ 18 февраля 2011

Ранее в этом месяце я задал этот вопрос 'Что такое runloop?' После прочтения ответов и некоторых попыток я заставил его работать, но все же я не понимаю его полностью. Если runloop - это просто цикл, связанный с потоком, и он не порождает другой поток за кулисами, как любой другой код в моем потоке (основной поток для простоты) может выполняться без блокирования / не запуска потому что где-то делают бесконечный цикл?

Это был вопрос номер один. Тогда ко второму.

Если я понял что-то правильно после того, как поработал с этим, но не до конца понял, что runloop - это цикл, в котором вы прикрепляете 'flags', которые уведомляют runloop, что когда дело доходит до точки, где находится флаг, это " останавливается "и выполнить любой обработчик, который подключен в этот момент? Затем он продолжает работать до следующего в очереди.

runloop

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

Ответы [ 2 ]

1 голос
/ 18 февраля 2011

Цикл выполнения будет блокироваться, если он отправляет метод, который занимает слишком много времени или который зацикливается навсегда.

Именно поэтому приложение для iPhone захочет сделать все, что выиграло 't вписывается в 1 «тик» цикла выполнения пользовательского интерфейса (скажем, с некоторой частотой кадров анимации или частотой отклика пользовательского интерфейса), и с достаточным пространством для любых других обработчиков событий, которые необходимо выполнить в том же «тике», либо разбитыхасинхронно, при отправке другому потоку для выполнения.

В противном случае материал будет заблокирован, пока управление не будет возвращено в цикл выполнения.

1 голос
/ 18 февраля 2011

«В некотором роде».

Вы прочитали эту конкретную документацию ?

Она углубляется - достаточно глубоко - в архитектуру и работубеговых петель.

...