Junior — Middle
În ce condiții utilizarea main.sync nu va duce la blocarea reciprocă a firelor?
sobes.tech AI
Răspuns de la AI
Utilizarea DispatchQueue.main.sync nu va duce la blocare mutuală (deadlock) doar dacă apelul nu are loc din thread-ul principal. Dacă apelați main.sync din thread-ul principal, acel thread va aștepta finalizarea blocului, care nu poate începe deoarece thread-ul principal este deja ocupat — ceea ce cauzează un deadlock.
Exemplu de utilizare sigură:
DispatchQueue.global().async {
DispatchQueue.main.sync {
// Actualizare UI
}
}
Aici, apelul main.sync are loc dintr-un thread de fundal, deci nu apare blocarea. Regula principală este să nu apelați niciodată DispatchQueue.main.sync din thread-ul principal.