KillerRabbitTHGDispatch 模块
KillerRabbit 是 THGDispatch 模块,包括 GCD bits:Queues, Groups, Timer, Semaphore 等等。
使用:
执行异步闭包:
Dispatch().async(.Background) {
doSomething()
}
在后台队列执行异步闭包:
Dispatch().async(.Background) {
doSomething()
}.notify(.Main) {
dearMainThreadImDone()
}
执行一个异步闭包并等候 3 秒:
Dispatch().async(.Background) {
doSomething()
}.wait(3) == false {
itTimedOutImSad()
} else {
itWasSuccessfulAndMyLifeHasMeaning()
}
执行一些异步任务:
DispatchGroup().async(.Background) {
doSomething(1)
}.async(.Utility) {
doSomething(2)
}.async(.High) {
doSomethingUrgently(3)
}.wait()
或者:
let group = DispatchGroup()
group.async(.Background) {
doSomething(1)
}.async(.Utility) {
doSomething(2)
}.async(.High) {
doSomethingUrgently(3)
}if group.wait(10) == true {
handstandAndCartwheel()
}
执行一个异步任务,同步一个 Semaphore:
let semaphore = DispatchSemaphore(initialValue: 0)// start a NSURLSession to get some data from our imaginary command line tool.let task = session.dataTaskWithRequest(request) { (data, response, error) -> Void in
if data != nil { let dataString: String = NSString(data: data, encoding: NSUTF8StringEncoding)! as String
json = JSON(string: dataString)
}
semaphore.signal()
}
task.resume()
semaphore.wait()
评论
