Avatar ·

Equivalente de @synchronized do Objective-C em Swift: sincronização correta de threads

Olá a todos! Recentemente migrei de Objective-C para Swift e enfrentei um problema de sincronização de acesso a dados compartilhados de diferentes threads. Em Objective-C, eu costumava usar a construção simples: ```objc @synchronized(self) { // seção crítica self.someProperty = newValue; } ``` Ela garantia que apenas uma thread executasse o código dentro do bloco por vez. Em Swift, essa sintaxe não existe. Eu sei que Swift tem GCD (Grand Central Dispatch), mas não tenho certeza de como organizar a sincronização corretamente. Problema: tenho uma classe de cache que é acessada por várias threads. Aqui está uma versão simplificada: ```swift class Cache { private var storage: [String: Any] = [:] func set(value: Any, forKey key: String) { storage[key] = value } func get(forKey key: String) -> Any? { return storage[key] } } ``` Com acesso concorrente de várias threads, ocorre uma data race. Como implementar corretamente