多线程 AB 执行完,再执行C

409 阅读1分钟

1 : dispatch_sync+串行队列,同步执行,能够保证A ,B顺序执行 dispatch_async A B任务执行完后,主线程再执行任务C

dispatch_queue_t queue = dispatch_queue_create(0,DISPATCH_QUEUE_SERIAL);

dispatch_sync(queue, ^{

NSLog(@"a");

});

dispatch_sync(queue, ^{

NSLog (@"b");

});

dispatch_async(dispatch_get_main_queue(), ^{

NSLog(@"c");

});

2: 队列依赖实现

利用NSBlockOperation 创建3个任务。设置依赖关系创建队列并加入任务

3:并发队列和主队列实现

同步执行 :我们可以使用多线程的知识,把多个线程都要执行此段代码添加到同一个串

行队列,这样就实现了线程同步的概念。当然这里可以使用 GCD 和 NSOperation 两种方案。

NSOperationQueue 有一个参数 maxConcurrentOperationCount 最大并发数,用来设置最多可

以让多少个任务同时执行。当你把它设置为 1 的时候,他不就是串行了嘛

[[NSOperationQueue mainQueue] addOperationWithBlock:^{

这里面执行任务 C

}];