GCD收录2

来源:互联网 发布:软件行业的发展趋势 编辑:程序博客网 时间:2024/06/06 08:54

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

        调度组可以跨队列通信。