GCD

来源:互联网 发布:java调用接口传递参数 编辑:程序博客网 时间:2024/05/22 03:25
什么是GCD:大中央调度器

GCD优点:是苹果专门为多核的并行运算提供的解决方案,
自动利用CPU内核,自动管理线程生命周期,程序员只需要告诉GCD要执行的任务,不需要编写任何线程管理代码。

GCD的核心概念:
任务:要执行什么操作;
队列:用来存放任务(先进先出)

GCD中两个用来执行任务的函数:
1,同步:dispath_sync  (在当前线程中执行)
2,   异步:  dispath_async   (新开一条线程执行)

GCD的队列可以分为两类:
1,并发队列:可以让多个任务并发执行(自动开启多个线程并同时执行任务)(只有在异步函数下才有效)
2,串行队列:一个任务执行完毕后再执行下一个任务。

同步执行方法:


异步执行方法:



线程间通讯:如何在子线程中跳回主线程(必须在主线程刷新UI)


串行队列,异步方法:


串行队列,同步方法:



***********************延时执行*************************





****************************一次性执行****************************

有的时候,我们在开发中,有些代码,从程序启动之后,就只希望执行一次!
 
 尤其在单例设计模式中使用非常普遍,在iOS开发中,单例的使用,已经到了滥用程度!


*************************调度组***************************


****************死锁*******************




1,如果主线程上有任务在执行,主队列不会调度任务。
2,关于GCD Block嵌套,要尽量减少层次,最多不要超过三层。
3,层次越多越复杂,多线程开发的原则:简单!
1 0