Skip to content

Instantly share code, notes, and snippets.

@vhart
Last active December 4, 2017 22:56
Show Gist options
  • Save vhart/af97af14b8b3db653f8797dba9225ea7 to your computer and use it in GitHub Desktop.
Save vhart/af97af14b8b3db653f8797dba9225ea7 to your computer and use it in GitHub Desktop.
IdentifiableDispatchQueue (Swift 3)
class IdentifiableDispatchQueue {
let key = DispatchSpecificKey<UUID>()
let id = UUID()
let queue: DispatchQueue
convenience init(label: String) {
let queue = DispatchQueue(label: label)
self.init(queue: queue)
}
convenience init(label: String,
qos: DispatchQoS = .default,
attributes: DispatchQueue.Attributes = [],
autoreleaseFrequency: DispatchQueue.AutoreleaseFrequency = .inherit,
target: DispatchQueue? = nil) {
let queue = DispatchQueue(label: label,
qos: qos,
attributes: attributes,
autoreleaseFrequency: autoreleaseFrequency,
target: target)
self.init(queue: queue)
}
init(queue: DispatchQueue) {
self.queue = queue
queue.setSpecific(key: key, value: id)
}
class func currentQueueIs(_ queue: IdentifiableDispatchQueue) -> Bool {
guard let value = DispatchQueue.getSpecific(key: queue.key) else { return false }
return value == queue.id
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment