Swift Queue Leadlock при вызове синхронизации внутри асинхроIOS

Программируем под IOS
Ответить
Anonymous
 Swift Queue Leadlock при вызове синхронизации внутри асинхро

Сообщение Anonymous »

Мой код замерзает, когда я вызываю queue.sync в queue.async. Выполнение полностью останавливается на вызове синхронизации. < /P>

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

import Foundation

let queue = DispatchQueue(label: "com.example.serialQueue")

func updateUI() {
let th = Thread.current
print("UI updated on \(th)")

queue.async {
let th = Thread.current
print("UI updated on \(th)")

queue.sync {  // Code freezes here
let th = Thread.current
print("UI updated on \(th)")
}
}
}

updateUI()
Когда я запускаю это на игровой площадке, выполнение, кажется, висит: третий оператор печати не работает, если я отправляю в свою пользовательскую серийную очередь. Что вызывает тупик с пользовательской очередью, и почему это не происходит с глобальной одновременной очередью? Пожалуйста, объясните, что происходит внутри.

Подробнее здесь: https://stackoverflow.com/questions/797 ... side-async
Ответить

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

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

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

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

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