172 похожих чатов

Всем привет, подскажите плиз какие события обрабатывает RunLoop, если к

примеру мы создаем асинхронный блок через диспач груп?
Если мы вызывыем DispatchQ.main.async {} то у нас создается собственный RunLoop для блока кода или же мы будем иметь доступ к RunLoop основного потока?

11 ответов

3 просмотра

Ты совершенно путаешь эти понятия.

Руслан- Автор вопроса
Руслан Лутфуллин
Ты совершенно путаешь эти понятия.

Run loop делает две вещи 1. ожидает пока что-то не произойдёт. 2. отправляет сообщение к получателю. вот если у каждого потока он свой, а мы создаем свою асинхронную задачу в отдельном потоке со своим RunLoop. разве не так?

Вообще говоря RunLoop не связан с DispatchQueue (исключение, Main поток). RunLoop привязан к потоку и создаётся системой вместе с потоком, НО по умолчанию в незапущенном состоянии. Единственный поток, который сам запускает свой RunLoop - это Main. Итак, работа DispatchQueue вне Main потока не связана с RunLoop, а в Main потоке связана напрямую. Все блоки переданные в DispatchQueue.main отрабатывают в common mode и попадают в Input Source типа Perform selector.

Руслан- Автор вопроса

RunLoop в самом простом своём понимании делает лишь одну вещь, это бесконечный цикл, который заставляешь поток жить. Попробуй создать Thread и выполнить в нём какой-то блок. Он выполнится внутри созданного потока и на этом всё, поток умрёт. Если рассматривать RunLoop в расширенном понимании, то за каждый такт бесконечного цикла он просматривает перечень входящих событий в том или ином моде(режиме) и выполняет определённые действия, подсчитывает дедлайн для таймеров, выполняет peform блоки(те самые из DispatchQueue.main) и много чего ещё, НО это не означает, что на главном потоке не выполняется ничего кроме RunLoop.

Руслан
получается что в приложении один RunLoop?

По умолчанию да, внутри главного потока, благодаря ему приложение не завершается сразу после запуска.

Руслан- Автор вопроса
Руслан Лутфуллин
По умолчанию да, внутри главного потока, благодаря...

а тогда если мы создаем свой Thread то у него будет свой RunLoop и он уже будет не давать своему потоку завершиться и будет обрабатывать его события, верно?

Руслан
а тогда если мы создаем свой Thread то у него буде...

RunLoop внутри потока есть всегда, остаётся его запустить. И да, если запущен RunLoop внутри потока, то он не умрёт, до тех пока пока его не убить явно.

Руслан- Автор вопроса
Руслан Лутфуллин
RunLoop внутри потока есть всегда, остаётся его за...

а какого рода события он может обрабатывать существуя в потоке который мы создали? События связанные только с вложенными задачами или же также нажатия на экран и прочие системные?

Руслан
а какого рода события он может обрабатывать сущест...

Любые, какие тебе будут нужны, помимо дефолтных таймеров и прочего списка:

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
26
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Привет! Подскажите, а как создать ярлыки программ на рабочем столе и в меню "Пуск" для всех пользователей сразу? Точнее, интересует вопрос: в каких системных переменных лежат...
Моринаро
6
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
14
Читаю сейчас [нет, уже больше не читаю!] курсовую о Булгакове, написанную, похоже, с помощью ChatGPT. Это удивительный психоделический опыт. Текст в основном написан в стиле б...
✨ Uni [🌊 В отпуске]
1
Карта сайта