Junior — Middle
Šta će se desiti ako koristite sinhrono raspoređivanje na glavnoj redi u globalnom kontekstu?
sobes.tech АИ
Одговор од АИ
Ако позовете синхроно dispatch (на пример, DispatchQueue.main.sync { ... }) на главну реду из главног тока, доћи ће до deadlock-а (взајамног блокирања).
Разлог је што је главна реда већ заузета извршавањем тренутног кода, а синхрона позив покушава да изврши блок чекајући његово завршетак. Али блок не може почети док тренутни код не заврши, што доводи до бесконачног чекања.
Због тога треба избегавати синхрона позива на главној реди из главног тока. Уместо тога, користите асинхроне позиве (DispatchQueue.main.async { ... }), који стављају блок у реду и омогућавају тренутном коду да се заврши.