Junior — Middle
Do classes ensure thread safety?
sobes.tech AI
Answer from AI
In iOS, thread safety is not automatically provided by default classes. Many classes in Foundation and UIKit are not thread-safe, so when accessing them concurrently from multiple threads, synchronization must be managed manually.
To ensure safety when working with threads, the following mechanisms are used:
- GCD (Grand Central Dispatch): allows executing tasks on specific queues, avoiding data races.
- NSLock, NSRecursiveLock, @synchronized: locking mechanisms to protect critical sections.
- Atomic operations: for example, using
atomicproperties in Objective-C, but this does not guarantee complete thread safety.
An example of using GCD for synchronizing access to a shared resource:
let queue = DispatchQueue(label: "com.example.syncQueue")
var sharedResource = 0
func increment() {
queue.sync {
sharedResource += 1
}
}
Thus, the developer must independently ensure thread safety by using appropriate synchronization mechanisms.