网上已经有非常多得,GCD如何操作的文章。
今天,就对这几天,对它的阅读,实验,做一个总结。
GCD 是iOS封装好了的,多线程处理类库。
它的存在,简略了程序员很多麻烦的各种锁的操作,咱们对线程加锁,无非是想让,某个线程在另一个线程之前执行,或者其他的一些需求。GCD已经给我们实现了,不再需要加锁。
GCD有三种队列 :
1、 主线程队列 : dispatch_get_main_queue();
一般用来刷新UI
2、并行队列 : dispatch_get_global_queue();
提交到并行队列的操作,将会逐一开始执行(可以理解为同时),但是由于操作的时间长短不一,它们结束的时间,并没有一定的顺序可言。
3、串行队列 :dispatch_queue_create(,);
与并行队列对应,这个串行队列,执行的方式,就是按照提交的顺序,一个一个执行,第一个执行完成之后,在进行第二个执行。 一般若对操作代码,有先后顺序的,用串行队列比较方便。
提交方式:
这里所谓的提交方式,就是指,把需要在线程中执行的代码,根据情况,提交给上述的三种队列中的一种
1、异步提交
2、同步提交
我们要知道,提交方式,影响的是我们开辟的线程,它的父线程,比如说:我们在A线程中 dispatch_asy 了一个队列(B线程),那么我们的提交方式,将会影响到A线程,而不是我们创建的子线程(B线程)。
如何影响的:如果是异步提交,那么我们的A线程,它将正常运行,没有被阻塞。 如果是同步提交,那么我们的A线程将会被B线程所阻塞。既:等到B线程完成之后,A才会继续下去。
小小的总结一下,队列的类型,影响的是我们创建线程它的执行方式; 而提交方式,影响的是我们创建线程,它的父线程是否会阻塞。
谢谢大家的阅读。 如果有错误的地方,请您毫不吝啬的指出,谢谢。