Sobes.tech
Junior — Middle

Que métodos ou ferramentas utilizas para gerir a sincronização de threads e prevenir condições de corrida?

sobes.tech IA

Resposta da IA

Para gerir a sincronização de threads e evitar condições de corrida no iOS, uso:

  • GCD (Grand Central Dispatch) com filas seriais e concorrentes para controlar o acesso aos recursos.
  • DispatchSemaphore para limitar o acesso simultâneo.
  • NSLock, NSRecursiveLock e outras primitivas de bloqueio para proteger secções críticas.
  • Uso de operações atómicas e propriedades com o atributo @synchronized ou através de DispatchQueue.

Exemplo de uso de uma DispatchQueue serial para sincronização:

let serialQueue = DispatchQueue(label: "com.example.serialQueue")
var recursoCompartilhado = 0

serialQueue.async {
    recursoCompartilhado += 1
}

serialQueue.async {
    print(recursoCompartilhado)
}