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