GCD中的并行队列

#pragma mark -并行队列

- (void)gcdDemo2

{

// 1.并行队列

dispatch_queue_tq =dispatch_queue_create("myQueue",DISPATCH_QUEUE_CONCURRENT);

//非ARC中,需要自己释放队列

//    dispatch_release(q);

// 3.同步任务,不会开启新的线程

//在实际开发中,同步任务可以保证执行完成之后,才让后续的异步任务开始执行,用于控制任务之间的先后顺序

//在后台线程中,处理“用户登录”

for(inti =0; i <10; i++) {

dispatch_sync(q, ^{

NSLog(@"%@ - %d", [NSThreadcurrentThread], i);

});

}

// 2.异步任务,会在多条线程上工作,具体开多少条线程,由系统决定

//仍然是按照任务添加到队列中的顺序被调度,只是执行先后可能会有差异!

// ***能够将耗时的操作,放到子线程中工作

// ***与串行队列异步任务相比,并发性能更好!但是执行的先后顺序,不固定

for(inti =0; i <10; i++) {

dispatch_async(q, ^{

NSLog(@"%@ - %d", [NSThreadcurrentThread], i);

});

}

}

并行队列中的任务是多个任务同时执行的

但是如果异步任务前面有同步任务 就会先执行同步任务同步任务是按顺序执行的任务等他执行完了才会执行并行中的异步任务  (可以做到阻塞 控制任务的执行顺序)

如果异步任务后面有同步任务  两个任务会并行(同时)执行

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容