
32
|
第
1
章
OperationQueue.main.addOperation {
//
当后台任务执行完,返回主队列刷新
UI
}
}
一个任务队列可以同时执行多个任务。它能够并行处理的任务数取决于几个因素,
如处理器的内核数以及任务的优先级。
默认情况下,任务队列所能并行处理的任务数由它自己决定。但是,通过设置
maxConcurrentOperationCount
属性,我们可以指定队列的并行操作数的最大值。
1.14
延迟执行
问题
我们可以在当前时间若干秒后再运行这段代码。
解决方案
使用
DispatchQueue
类的
asyncAfter
函数,我们可以让闭包推迟到未来某个时间
执行:
//
放一个炸弹,让它在
10
秒后爆炸
PlaceBomb()
let deadline = DispatchTime.now() + 10
DispatchQueue.main.asyncAfter(deadline: deadline, execute: {
//
时间到,嘣!
ExplodeBomb()
})
讨论
OperationQueue
实际上是基于
C
的
GCD API
的一个更高级的封装。使用
GCD
(
Grand
Central Dispatch
)执行的任务,基本上都是在“
Dispatch Queue
”中执行的,后者
几乎就和
OperationQueue
一模一样。在
GCD
中,我们可以向
Dispatch Queue
提交