美文网首页
GCD四大队列

GCD四大队列

作者: 昵称已经被使用换个别的 | 来源:发表于2020-04-20 17:48 被阅读0次

    一.队列

    原则:队列先进先出原则

    1.串行队列

    串行队列:放到该队列上的任务,在子线程中串行执行

    dispatch_queue_create 创建串行队列

    参数1:队列的标示,一般是公司域名倒写

    参数2:队列的类型,NULL代表串行队列,DISPATCH_QUEUE_SERIAL代表串行队列 DISPATCH_QUEUE_CONCURRENT代表并行队列

    dispatch_queue_t serailQueue= dispatch_queue_create("com.queue.serialQueue", DISPATCH_QUEUE_SERIAL);
    

    ①串行队列 同步任务

    特点:有顺序执行,不开辟线程
    
    应用场景:FMDB,同步任务,保证数据安全
    

    ②串行队列 异步任务

    特点:有顺序执行,并且在开辟的线程中执行,并且之开辟一条线程!
    
    应用场景:耗时操作,有严格操作顺序,比如付费网站下载图片(登录->付费->下载)
    

    2.并发队列

    并发队列,必须自己写,不能写NULL

    dispatch_queue_t concurrentQueue=  dispatch_queue_create("com.queue.concurrentQueue", DISPATCH_QUEUE_CONCURRENT);
    

    ①并发队列,同步任务

    特点:没有开辟新线程,同时是按照顺序

    应用场景:开发中几乎不用

    ②并发队列,异步任务

    特点:会开线程,开N条,表示不固定,因为我们的线程循环利用的功能 没有顺序.

    应用场景:比如下载多部片

    3.全局队列和并发队列,执行效果一样,只是说,并发队列,需要我们程序员,自己创建,而全局队列,是由于系统提供

    特点:任务可以同时执行,这样可以提高程序的运行效率.

    ①全局队列,同步任务

    特点:没有开辟新线程,同时是按照顺序

    应用场景:开发中几乎不用

    ②全局队列,异步任务

    特点:会开线程,开N条,表示不固定,因为我们的线程循环利用的功能 没有顺序.

    应用场景:比如下载多部片

    4.主队列

    特点:它永远在主线程工作,这个是苹果给开发人员提供回到主线程做事的一种机制

    ①主队列,同步任务 特点:主队列,只有在主线程空闲的时候,才能调度里面的任务 造成死锁

    ②主队列,异步任务 应用场景:回到主线程做事,一般是做和UI相关的工作.

    总结:任务的优先级比队列优先级高,所以我们在队列和任务的各种组合的时候,首先要看我们的任务.

    开不开线程,由任务决定

    ⭕️异步才有开辟线程的能力,同步没有开辟线程的能力

    ⭕️异步是在其它线程上执行,同步是在当前线程上执行

    相关文章

      网友评论

          本文标题:GCD四大队列

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