Avatar ·

Äquivalent von @synchronized aus Objective-C in Swift: korrekte Thread-Synchronisation

Hallo zusammen! Ich bin erst kürzlich von Objective-C auf Swift umgestiegen und bin auf ein Problem mit der Synchronisation des Zugriffs auf gemeinsame Daten aus verschiedenen Threads gestoßen. In Objective-C habe ich das einfache Konstrukt verwendet: ```objc @synchronized(self) { // kritischer Abschnitt self.someProperty = newValue; } ``` Es garantierte, dass nur ein Thread gleichzeitig den Code innerhalb des Blocks ausführt. In Swift gibt es diese Syntax nicht. Ich weiß, dass es in Swift GCD (Grand Central Dispatch) gibt, bin mir aber nicht sicher, wie ich die Synchronisation richtig organisieren soll. Problem: Ich habe eine Cache-Klasse, auf die mehrere Threads zugreifen. Hier ist eine vereinfachte Version: ```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] } } ``` Bei gleichzeitigem Zugriff aus mehreren Threads kommt es zu einem data race. Wie implementiere ich das richtig?