知道线程目标的完成c

时间:2017-06-23 13:00:19

标签: ios arrays multithreading

我有一些代码如:

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
  });
}

所以我推出了很多后台流程。 我想知道所有过程何时完成其他事情。 我该怎么办?

1 个答案:

答案 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