Avatar ·

Objective-C से @synchronized का Swift में समतुल्य: सही थ्रेड सिंक्रोनाइज़ेशन

सभी को नमस्ते! मैंने हाल ही में Objective-C से Swift पर स्विच किया है और विभिन्न थ्रेड्स से साझा डेटा तक पहुँच को सिंक्रोनाइज़ करने की समस्या का सामना किया है। Objective-C में मैं सरल कंस्ट्रक्शन का उपयोग करता था:\n\n```objc\n@synchronized(self) {\n // क्रिटिकल सेक्शन\n self.someProperty = newValue;\n}\n```\n\nयह गारंटी देता था कि ब्लॉक के अंदर कोड को एक समय में केवल एक थ्रेड ही निष्पादित करेगा। Swift में ऐसा कोई सिंटैक्स नहीं है। मुझे पता है कि Swift में GCD (Grand Central Dispatch) है, लेकिन मुझे यकीन नहीं है कि सिंक्रोनाइज़ेशन को सही तरीके से कैसे व्यवस्थित किया जाए।\n\nसमस्या: मेरे पास एक कैश क्लास है, जिसे कई थ्रेड्स एक्सेस करते हैं। यहाँ एक सरलीकृत संस्करण है:\n\n```swift\nclass Cache {\n private var storage: [String: Any] = [:]\n \n func set(value: Any, forKey key: String) {\n storage[key] = value\n }\n```