Существует огромная разница: глобальная очередь является параллельной, в то время как ваша видео-очередь последовательная.
Если вы отправляете два блока напрямую в глобальную очередь, системе разрешается запускать их одновременно.
Если вы отправляете два блока в свою очередь видео, система должна запускать их последовательно (а не одновременно).Первый отправленный вами блок должен быть возвращен до того, как очередь сможет вызвать второй блок.Это означает, что вы можете использовать свою очередь видео в качестве механизма сериализации / блокировки для доступа к состоянию потокобезопасным способом.
Другие известные мне различия:
В навигаторе отладки Xcode очереди помечаются по-разному.
Вы можете установить частоту автоматического выпуска созданной вами видео-очереди.
Если вы установили класс качества обслуживания в видео-очереди при его создании, это QoS переопределит QoS целевой очереди.
Вы можете приостановить и возобновить диспетчеризацию на своемвидео очередь.Я не уверен, работают ли suspend
и resume
в глобальной очереди, но если они это делают, я уверен, что приостановка глобальной очереди - это плохая идея.Вы не знаете, какие важные задачи система может ставить в очередь в глобальных очередях.
Вы можете setSpecific
значения в вашей видео-очереди, а затем получить к ним доступ, используя getSpecific
вблоки, поставленные в очередь в видео-очереди.Но getSpecific
не вернет эти значения в блоках, поставленных в очередь непосредственно в глобальную очередь.Это чаще всего используется для определения того, когда вызовы API выполняются в определенной очереди, из соображений безопасности потока.