Проблемы с пониманием работы DispatchQueue - PullRequest
0 голосов
/ 11 июля 2020

У меня проблемы с пониманием работы 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, поэтому любые обоснованные и обоснованные объяснения будут приемлемыми.

Спасибо.

...