Swiftでの同期処理
What is the Swift equivalent to Objective-C's “@synchronized”?
GCD を使う
let lockQueue = DispatchQueue(label: "com.test.LockQueue")
lockQueue.sync {
// critical section code
}
objc_sync_enter / objc_sync_exit を使う
public func synchronized(obj: AnyObject, closure: () -> Void) {
objc_sync_enter(obj)
closure()
objc_sync_exit(obj)
}
synchronized(self) {
// critical section code
}
私は後者を採用しました。