dub*_*eat 0 grand-central-dispatch ios
有人可以提供一个例子,说明在使用信号量时何时使用DISPATCH_TIME_NOW vs DISPATCH_TIME_FOREVER?
2和我之间的区别是什么?
根据文档,DISPATCH_TIME_NOW表示立即超时.DISPATCH_TIME_FOREVER表示超时无限.
为什么你会想要前者,即:立即超时.
您可以立即超时以检查块是否已完成计算.类似地,您可以永远等待,直到块完成,然后继续执行另一个块.
检查组是否完成的示例可能如下所示.
if (dispatch_group_wait(myDispatchGroup, DISPATCH_TIME_NOW) == 0) {
// myDispatchGroup is finished...
} else {
// myDispatchGroup is _not_ finished...
}
Run Code Online (Sandbox Code Playgroud)
检查组是否在永远等待时完成没有意义,因为该功能将永远等待.相反,我们使用该功能同步阻止(阻塞,如暂停或等待,而不是像在GCD块中一样),直到组完成.
// Enqueue myDispatchGroup
// Wait for it to finish
dispatch_group_wait(myDispatchGroup, DISPATCH_TIME_FOREVER);
// Do other work that depends on myDispatchGroup being completed
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4778 次 |
| 最近记录: |