Swift 的轻量级 GCD 包装器。主要参考自 MacRuby 的 Dispatch 模块。
要运行示例项目,首先克隆仓库,然后从 Example 目录中运行 pod install
。
// Create a serial queue
let queue = Queue("Serial", .Serial)
// Create a concurrent queue
let queue = Queue("Concurrent", .Concurrent)
// It is serial by default
let queue = Queue("Concurrent")
// Get main queue
let queue = Queue.main()
// Get global queue via QOS
let queue = Queue.concurrent(.UserInteractive)
// Get global queue via priority
let queue = Queue.concurrent(priority: .Background)
// asynchronously
queue.async {
data = true
}
// synchronously
queue.sync {
data = true
}
queue.apply(10) {
// some concurrent task
}
queue.apply(0.3) {
// run after 0.3 seconds
}
信号量提供了一种高效的机制,通过等待和信号的组合来同步线程。
这特别适用于控制对有限资源的访问。
let queue = Queue("sample")
let semaphore = Semaphore(0)
queue.after(1.0) {
print "Hello"
semaphore.signal
}
semaphore.wait // -> true
要手动在您的项目中使用此库,只需要将 Classes
目录下的所有 swift 文件拖拽到项目结构中。
Francis Chong, [email protected]
SwiftyDispatch 可在 MIT 许可下使用。有关更多信息,请参阅 LICENSE 文件。