Avatar ·

Équivalent de @synchronized d'Objective-C en Swift : synchronisation correcte des threads

Bonjour à tous ! Je viens tout juste de passer d'Objective-C à Swift et j'ai rencontré un problème de synchronisation de l'accès aux données partagées depuis différents threads. En Objective-C, j'avais l'habitude d'utiliser une construction simple : ```objc @synchronized(self) { // section critique self.someProperty = newValue; } ``` Elle garantissait qu'un seul thread exécutait le code à l'intérieur du bloc à la fois. En Swift, cette syntaxe n'existe pas. Je sais que Swift dispose de GCD (Grand Central Dispatch), mais je ne suis pas sûr de la bonne façon d'organiser la synchronisation. Problème : j'ai une classe de cache à laquelle accèdent plusieurs threads. Voici une version simplifiée : ```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] } } ``` En cas d'accès concurrent depuis plusieurs threads, il y a une data race. Comment implémenter correctement