GCD应用拓展

多线程(3) - ios关于线程调度的三种方式之GCD

  一,  队列的选择技巧

    1,串行队列异步执行:开一条线程,顺序执行,效率不高,执行比较慢,资源占用小,省电。使用场合:一般网络是3g,对性能要求不高,

    2,并发队列异步执行:开启多条线程,并发执行,效率高,消耗资源大,费电。使用场合:网络是WiFi,要求用户体验非常流畅。对任务的顺序没有要求。

    3,同步任务的使用场合:一般只会在并发队列,需要阻塞后续的任务,必须等待同步任务执行完毕,然后再去执行。

   

二,GCD常见的应用拓展

1, 队列之间的通信:

    dispatch_async(dispatch_get_global_queue(0, 0), ^{

        NSURL * url = [NSURL URLWithString:@""];

        NSData * data = [NSData dataWithContentsOfURL:url];

        UIImage * image = [UIImage imageWithData:data];;

        dispatch_async(dispatch_get_main_queue(), ^{

            self.image.image = image;

        });

    });

    2,延时操作:dispatch_after(延时多久,队列,操作)

   3, 调度分组:应用场景,开发的时候有时候出现多个网络请求,都完成以后,在给用户一个通知,或者说刷新UI。但因为每个网络请求的执行时间不一定,这时候就可以使用调度调度分组了。

        调度组可以跨队列通信。


阅读更多
版权声明:本文为博主原创文章,需要转载的,请先联系我 https://blog.csdn.net/FocusOnLovingFreedom/article/details/49888407
上一篇iOS下的XML解析
下一篇主队列,全局队列,并发队列关系比较
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭