码迷,mamicode.com
首页 > 移动开发 > 详细

iOS_多线程_GCD

时间:2014-11-23 13:15:44      阅读:571      评论:0      收藏:0      [点我收藏+]

标签:ios   gcd   并发   串行   

1、GCD串行队列+异步dispatch
说明:非常非常非常有用的操作
异步,表示会在主线程之外开新的线程,但由于 队列是串行的,故只开一个(只开一个)新的线程
当dispatch分派好block之后,主线程立即返回,继续向下执行
串行队列,表示:被分派到此队列的block们,将FIFO有序地一个接一个执行
dispatch_async说明:
立即返回,从不等待,队列决定是serially还是concurrently,block_copy(),block_release()
bubuko.com,布布扣
bubuko.com,布布扣
程序运行结果输出:
可以看到:串行队列+异步方式向队列添加block,只会新开一个线程,所有被添加的block在新开的线程里,愉快而有序地执行
bubuko.com,布布扣

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

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

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

bubuko.com,布布扣
bubuko.com,布布扣
4、并发队列+同步dispatch

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

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

bubuko.com,布布扣
bubuko.com,布布扣

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

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














iOS_多线程_GCD

标签:ios   gcd   并发   串行   

原文地址:http://blog.csdn.net/pre_eminent/article/details/41408715

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!