Junior — Middle
Come funziona il blocco quando si chiama il metodo sync su una coda sequenziale?
sobes.tech AI
Risposta dell'AI
Quando si chiama il metodo sync su una coda seriale in GCD (Grand Central Dispatch), il thread corrente viene bloccato fino a quando il compito passato a sync non viene completato. Se sync viene chiamato dallo stesso thread che gestisce questa coda, si verifica un deadlock, poiché la coda non può iniziare un nuovo compito finché quello attuale non termina, e il thread attuale aspetta la fine del nuovo compito.
Esempio:
let serialQueue = DispatchQueue(label: "com.esempio.serial")
serialQueue.sync {
print("Esecuzione del compito")
}
// Il thread corrente è bloccato fino al completamento del compito
È importante non chiamare sync sulla stessa coda seriale da dentro un compito di quella coda per evitare deadlock.