dispatch_apply
принимает очередь отправки в качестве параметра, который позволяет вам выбрать, в какой очереди выполнять блок.
Насколько я понимаю, подразумевается DispatchQueue.concurrentPerform
в Swiftзаменить dispatch_apply
.Но эта функция не принимает очередь отправки в качестве параметра.После поиска, я нашел этот учебник GCD , который имеет этот код:
let _ = DispatchQueue.global(qos: .userInitiated)
DispatchQueue.concurrentPerform(iterations: addresses.count) { index in
// do work here
}
И объясняет:
Эта реализация включает в себя любопытную строку кода:let _ = DispatchQueue.global(qos: .userInitiated)
.Вызов этого говорит заставляет GCD использовать очередь с качеством обслуживания .userInitiated
для одновременных вызовов.
Мой вопрос, действительно ли это работает для определения QoS?Если да, то как?
Для меня может иметь смысл, что нет способа указать очередь для этого, потому что последовательная очередь не имеет смысла в этом контексте, и только самое высокое QoS действительно имеет смысл, учитываячто это синхронная блокирующая функция.Но я не могу найти никакой документации относительно того, почему можно указать очередь с dispatch_apply
, но невозможно (?) С DispatchQueue.concurrentPerform
.