Avatar ·

从Objective-C到Swift中@synchronized的等价物:正确的线程同步

大家好!我最近刚从Objective-C转到Swift,遇到了从不同线程同步访问共享数据的问题。在Objective-C中,我习惯使用简单的结构: ```objc @synchronized(self) { // 临界区 self.someProperty = newValue; } ``` 它保证了同一时间只有一个线程执行块内的代码。在Swift中没有这样的语法。我知道Swift中有GCD(Grand Central Dispatch),但不确定如何正确组织同步。 问题:我有一个缓存类,多个线程会访问它。以下是简化版本: ```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] } } ``` 当多个线程并发访问时,会发生数据竞争(data race)。如何正确实现