let queue = dispatch_get_global_queue(
DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
获取 GCD 的 queue 的引用,GCD 不是基于面向对象,还是基于 Function。
拥有了 queue,就可以向 queue 发送 closure:
dispatch_async(queue) {
//closure
}
在子 queue 中无法操作界面 UI,所以如果要比如要对TableView
进行reloadData
操作,就必须在主线程中,这时候可以获得main queue
来进行操作,main queue
对应着main thread
。
dispatch_async(dispatch_get_main_queue()) {
self.tableView.reloadData()
}
另外dispatch_async()
是异步执行,但是dispatch_sync
是同步的 GCD,dispatch_sync
也会将 closure 在后台运行,但是主线程回一直等待 closure 完成之后才能进行下一步操作。
网友评论