美文网首页iOS多线程iOS点点滴滴
iOS-GCD多线程的基本使用

iOS-GCD多线程的基本使用

作者: cb6a1e2768d1 | 来源:发表于2015-05-23 18:45 被阅读261次

    如果你要使用多线程,在iOS中,使用GCD这种方式简直就是烂大街了。

    所以必须学习,不然 你怎么看得懂别人的代码惹。

    以下只是告诉你怎么使用GCD开启多线程,想要理论的请百度GCD(哇,好多)

    GCD中有2个用来执行任务的函数(!=。=C语言的知识惹)

    dispatch_sync : 同步执行,不开新线程

    dispatch_async : 异步执行,开启新线程

    同时还要理解另外两个概念:串行和并发队列(执行任务的方式)

    并发:多个任务可以同时执行

    串行:一个任务执行完在执行下一个任务(注:不要以为任务一个一个执行就在主线程,就不可以异步,错误!它也可以异步执行串行)

    看异步的方法:

    dispatch_async(dispatch_queue_t queue, ^(void)block)

    dispatch_queue_t 就是队列,选择并发或串行。

    同时下载图片啊数据啊,一般都用并发队列

    那问题来了,挖掘机到底....额...错了错了...是怎么代码写并发队列?

    GCD默认提供使用全局队列,只要我们拿来使用就行了,下面就是拿全局队列:

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    然后我们就可以使用queue了。

    1.例子

    介绍比较常用的异步并发执行事例:

    图1

    效果:(时间是同步执行的,线程number不一样,说明开启了三条不同的线程同时执行)

    图2

    2.例子

    GCD异步串行执行

    先创建一个串行的队列,不像并发队列可以直接拿来用。

    dispatch_queue_t queue = dispatch_queue_create("", NULL);

    第一个参数是一个字符串,C语言的字符串不要用@哟。

    第二个传NULL。

    我的代码:

    图3

    运行效果:(number 一样:说明串行;时间一样:并发执行)

    图4

    哦,最后说一句,GCD根本不用管线程的生命周期,好方便。

    相关文章

      网友评论

        本文标题:iOS-GCD多线程的基本使用

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