Sobes.tech
Junior — Middle

Kunnen zich situaties voordoen waarin het gebruik van een sync-aanroep op de hoofdlijst niet leidt tot een onderlinge blokkering?

sobes.tech AI

Antwoord van AI

Het aanroepen van sync op de hoofdwachtrij leidt meestal tot een onderlinge blokkering als het wordt aangeroepen vanuit dezelfde hoofdwachtrij, omdat het wacht tot de huidige blok is voltooid die niet kan beginnen zolang de huidige niet is voltooid. Als de sync-aanroep op de hoofdwachtrij echter vanuit een andere thread (niet vanuit de hoofdwachtrij) gebeurt, zal er geen onderlinge blokkering zijn, omdat de hoofdthread de blok kan uitvoeren en de aanroep kan vrijmaken.

Voorbeeld:

DispatchQueue.main.sync {
    // Deze code wordt zonder onderlinge blokkering uitgevoerd als de aanroep afkomstig is van een achtergrondthread
}