Почему асинхронный вызов DispatchQueue.main.sync из параллельной очереди завершается успешно, но синхронно завершается сIOS

Программируем под IOS
Anonymous
Почему асинхронный вызов DispatchQueue.main.sync из параллельной очереди завершается успешно, но синхронно завершается с

Сообщение Anonymous »

Здесь я создаю параллельную очередь с приоритетом .background:

Код: Выделить всё

let background = DispatchQueue(label: "backgroundQueue",
qos: .background,
attributes: [],
autoreleaseFrequency: .inherit,
target: nil)
Когда я пытаюсь вызвать DispatchQueue.main.sync из этой очереди асинхронно, он выполняется успешно

Код: Выделить всё

background.async {
DispatchQueue.main.sync {
print("Hello from background async")
}
}
Однако, если я попытаюсь вызвать DispatchQueue.main.sync из этой очереди синхронно, это приведет к взаимоблокировке

Код: Выделить всё

background.sync {
DispatchQueue.main.sync {
print("Hello from background sync")
}
}
Почему асинхронный вызов DispatchQueue.main.sync из параллельной очереди завершается успешно, но синхронно завершается с ошибкой?

Подробнее здесь: https://stackoverflow.com/questions/695 ... ueue-succe

Вернуться в «IOS»