Run loop связан с потоком (thread), а не с очередью (queue). У каждого основного потока (main thread) есть свой run loop, который создается автоматически. У фоновых потоков его нет по умолчанию, но при необходимости его можно создать и запустить. Очереди (GCD) не имеют собственных run loop'ов; они управляют выполнением задач на основе пула потоков (иногда используя main thread).
swift
RunLoop, созданный автоматически. Он обрабатывает события UI, таймеры и другие асинхронные операции.RunLoop при необходимости (например, для управления таймерами или портами), но его нужно инициализировать и запустить вручную.RunLoop напрямую. Они ставят задачи в очередь, которые затем выполняются на доступных потоках из пула.