关闭

GCD应用拓展

159人阅读 评论(0) 收藏 举报

多线程(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。但因为每个网络请求的执行时间不一定,这时候就可以使用调度调度分组了。

        调度组可以跨队列通信。


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6992次
    • 积分:211
    • 等级:
    • 排名:千里之外
    • 原创:13篇
    • 转载:10篇
    • 译文:0篇
    • 评论:0条