美文网首页多线程
iOS面试题 GCD部分

iOS面试题 GCD部分

作者: Mrxiaowang | 来源:发表于2017-09-20 13:44 被阅读75次

    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


    相关文章

      网友评论

        本文标题:iOS面试题 GCD部分

        本文链接:https://www.haomeiwen.com/subject/fvbssxtx.html