Почему асинхронный вызов 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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