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```