You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
18 lines
365 B
18 lines
365 B
import Foundation
|
|
|
|
internal extension DispatchQueue {
|
|
|
|
private static var _onceTracker: [String] = []
|
|
|
|
static func once(token: String, block: () -> Void) {
|
|
objc_sync_enter(self)
|
|
defer { objc_sync_exit(self) }
|
|
|
|
if _onceTracker.contains(token) {
|
|
return
|
|
}
|
|
|
|
_onceTracker.append(token)
|
|
block()
|
|
}
|
|
}
|