首页 > 代码库 > iOS_多线程_GCD

iOS_多线程_GCD

1、GCD串行队列+异步dispatch
说明:非常非常非常有用的操作
异步,表示会在主线程之外开新的线程,但由于 队列是串行的,故只开一个(只开一个)新的线程
当dispatch分派好block之后,主线程立即返回,继续向下执行
串行队列,表示:被分派到此队列的block们,将FIFO有序地一个接一个执行
dispatch_async说明:
立即返回,从不等待,队列决定是serially还是concurrently,block_copy(),block_release()


程序运行结果输出:
可以看到:串行队列+异步方式向队列添加block,只会新开一个线程,所有被添加的block在新开的线程里,愉快而有序地执行


2、GCD串行队列+同步dispatch (极少使用)
同步表示:不会开新线程,就在主线程上运行
串行表示:所有block一个接一个运行




3、并行队列+异步dispatch(容易失控)

开多条新线程(具体开几个无法控制),block执行没有顺序,程序员无法控制执行顺序



4、并发队列+同步dispatch

关键:因为同步,则不会开新线程,直接使用主线程,

        虽然是并发队列,但由于可有一个执行路线,所以会顺序执行




5、发散思维--->串行队列先同步dispatch十个block,再异步dispatch十个block
既然是同步分派:就是在主线程上执行,完毕后,
再异步分派:开新线程,由于队列是串行,故,只会开一条新线程,一个接一个愉快地执行



6、发散思维--->并行队列中,先同步分派10个block,再异步分派10个blcok
只要是同步dispatch,就只会在主线程上运行
再异步分派,就一定会开新线程,由于是并行队列:故会开N条新线程,N数量不可控制,block们的执行顺序也不可控制
















iOS_多线程_GCD