我有一些代码如:
while( condition ) {
// do stuff
[self lauchProcess:parameter];
}
-(void)launchProcess:(id)par{
// do stuff
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// do stuff
});
}
所以我推出了很多后台流程。 我想知道所有过程何时完成其他事情。 我该怎么办?
答案 0 :(得分:0)
在dispatch_get_global_queue()中使用 dispatch_get_main_queue()
。
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
// Background work
dispatch_async(dispatch_get_main_queue(), ^{
//This block will execute other stuffs Once background task is completed do your other stuff
}); });
dispatch_get_main_queue()
在应用程序的主线程上执行任务。通常在某些背景时从后台队列中调用它 处理已完成,用户界面需要更新。
dispatch_get_global_queue()
是并发队列(后台线程)和主要队列
全局队列的页面。
全局并发队列代表三个优先级带
DISPATCH_QUEUE_PRIORITY_HIGH DISPATCH_QUEUE_PRIORITY_DEFAULT DISPATCH_QUEUE_PRIORITY_LOW
正如@Philip所说,您需要了解dispatch groups