美文网首页
iOS编程之GCD

iOS编程之GCD

作者: 落魄的iOS程序员 | 来源:发表于2021-03-29 17:34 被阅读0次

在使用GCD之前先了解一下有哪些好处?

        GCD可以多任务并行执行;可以更多地利用CPU资源;会自动管理线程的生命周期,程序员只需要告诉GCD要执行的任务,不需要程序员去手动管理;

 GCD有四种模式:这里有同步和异步任务,还有串行和并行队列;

dispatch_queue_create(const char *_Nullable label,dispatch_queue_attr_t _Nullable attr);

方法创建一个队列,第一个参数是一个字符,第二个参数是创建串行队列还是并行队列,DISPATCH_QUEUE_CONCURRENT表示并行队列,DISPATCH_QUEUE_SERIAL表示串行队列;void

dispatch_sync(dispatch_queue_t queue, DISPATCH_NOESCAPE dispatch_block_t block);方法是同步任务;

dispatch_async(dispatch_queue_t queue, DISPATCH_NOESCAPE dispatch_block_t block);方法是异步任务;

1、同步+串行队列

创建一个串行队列:

dispatch_queue_t queue = dispatch_queue_create("net.bujige.testQueue", DISPATCH_QUEUE_SERIAL);

dispatch_sync(queue, ^{

NSLog(@"同步+串行队列=%@",[NSThread currentThread]);

这里打印线程为主线程main

})

2、异步+串行队列

dispatch_async(queue, ^{

NSLog(@"同步+串行队列=%@",[NSThread currentThread]);

这里打印线程创建了一个新子线程,这里添加多个任务的话为同一个子线程

})

3、同步+并行队列

创建一个并行队列:

dispatch_queue_t queue = dispatch_queue_create("net.bujige.testQueue", DISPATCH_QUEUE_CONCURRENT);

dispatch_sync(queue, ^{

NSLog(@"同步+串行队列=%@",[NSThread currentThread]);

这里打印线程和主线程一样

})

4、异步+并行队列

dispatch_async(queue, ^{

NSLog(@"同步+串行队列=%@",[NSThread currentThread]);

这里打印线程创建了一个新子线程,这里如果添加多个任务的话就是多个子线程

})

最后在线程的使用中要注意线程死锁问题。线程死锁其实和循环引用比较类似,就是A等待B执行完,B等待A执行完,造成线程死锁。

相关文章

  • iOS多线程相关面试题

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • 多线程之--NSOperation

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS多线程之--NSThread

    iOS多线程demo iOS多线程之--NSThread iOS多线程之--GCD详解 iOS多线程之--NSOp...

  • iOS开发多线程之GCD

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 GCD...

  • iOS多线程之GCD

    iOS多线程之GCD 什么是GCD GCD(grand central dispatch) 是 libdispat...

  • iOS开发之GCD并发队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 03 ...

  • iOS开发之GCD同步任务加强

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 004...

  • iOS开发之GCD串行队列

    iOS开发多线程之GCDiOS开发之GCD同步任务加强iOS开发之GCD串行队列iOS开发之GCD并发队列 实例d...

  • GCD的使用

    GCD的详解iOS多线程--彻底学会多线程之『GCD』 GCD线程之间的通讯 一般在主线程里面刷新UI 点击、滚动...

  • FLAnimatedImageView加载卡顿问题。

    GCD 的调用 转载“iOS多线程编程之Grand Central Dispatch(GCD)介绍和使用”

网友评论

      本文标题:iOS编程之GCD

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