У меня проблемы с пониманием работы DispatchQueue
, и я хотел больше узнать о том, как они реализуют основные требования теории очередей. Я попытался проверить очередь, используя:
dump(DispatchQueue.global())
И это дало следующий результат:
- <OS_dispatch_queue_global: com.apple.root.default-qos[0x10c041f00] = { xref = -2147483648, ref = -2147483648, sref = 1, target = [0x0], width = 0xfff, state = 0x0060000000000000, in-barrier}> #0
- super: OS_dispatch_queue
- super: OS_dispatch_object
- super: OS_object
- super: NSObject
Я понял, что метка com.apple.root.default-qos
, и это указано в Apple docs , а класс - это упакованный OS_dispatch_queue_global
. Я понимаю, что qos
можно запросить в самой очереди, и это тоже имеет смысл. Ширина, я думаю, просто означает размер выделенной памяти. не уверен - я думаю, что они связаны с фундаментальными концепциями организации очередей (на ум пришла многопоточность), но было бы здорово узнать больше.
Скрыто ли autoreleaseFrequency
из этого описания отладки? И что означает in-barrier = 0
? Я попытался создать собственную очередь, и она была заменена на in-flight = 0
.., так что тоже запуталась.
Любой свет на то, как эти недокументированные переменные относятся к теории очередей как концепции, будет приветствоваться. Я знаю, что это недокументированные внутренние компоненты API, поэтому любые обоснованные и обоснованные объяснения будут приемлемыми.
Спасибо.