iOS面试题 GCD部分

1、GCD的队列(dispatch_queue_t)分哪两种类型?

答:串行队列Serial Dispatch Queue

      并行队列Concurrent Dispatch Queue

2、如何用GCD同步若干个异步调用?(如根据若干个url异步加载多张图片,然后在都下载完成后合成一张整图)

答:使用Dispatch Group追加block到Global Group Queue,这些block如果全部执行完毕,就会执行Main Dispatch Queue中的结束处理的block

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_group_t group = dispatch_group_create();

dispatch_group_async(group, queue, ^{ /*加载图片1 */ });

dispatch_group_async(group, queue, ^{ /*加载图片2 */ });

dispatch_group_async(group, queue, ^{ /*加载图片3 */ });

dispatch_group_notify(group, dispatch_get_main_queue(), ^{

// 合并图片

});

3、dispatch_barrier_async的作用是什么?

答:在并行队列中,为了保持某些任务的顺序,需要等待一些任务完成后才能继续进行,使用 barrier 来等待之前任务完成,避免数据竞争等问题。

详解:http://www.cnblogs.com/zhidao-chen/p/3598161.html

4、苹果为什么要废弃dispatch_get_current_queue?

答:dispatch_get_current_queue容易造成死锁      详细链接:http://blog.csdn.net/ej_paradise/article/details/50375004







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

相关阅读更多精彩内容

  • 我们知道在iOS开发中,一共有四种多线程技术:pthread,NSThread,GCD,NSOperation: ...
    请叫我周小帅阅读 5,362评论 0 1
  • 史上最全的iOS面试题及答案 iOS面试小贴士———————————————回答好下面的足够了----------...
    Style_伟阅读 7,150评论 0 35
  • 目录(GCD): 关键词 混淆点 场景应用 总结 1. 关键词 线程概念: 独立执行的代码段,一个线程同时间只能执...
    Ryan___阅读 5,074评论 0 3
  • 多线程、特别是NSOperation 和 GCD 的内部原理。运行时机制的原理和运用场景。SDWebImage的原...
    LZM轮回阅读 6,128评论 0 12
  • 同学的娃都打酱油了,你还被你妈逼着相亲?今天教你几招干货,简单易行见效快。事先说明:桃花已经很旺的女生禁用,不然招...
    十伯草堂阅读 3,196评论 0 2

友情链接更多精彩内容