Назад к вопросам
Junior — Middle
93
При каких условиях использование main.sync не приведет к взаимной блокировке потоков?
Ответ от нейросети
sobes.tech AI
Использование DispatchQueue.main.sync не приведет к взаимной блокировке потоков (deadlock) только если вызов происходит не из главного потока. Если вы вызываете main.sync из главного потока, поток будет ждать завершения блока, который не может начаться, так как главный поток уже занят — это и вызывает взаимную блокировку.
Пример безопасного использования:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// Обновление UI
}
}
Здесь вызов main.sync происходит из фонового потока, поэтому блокировка не возникает. Главное правило — никогда не вызывать DispatchQueue.main.sync из главного потока.