GCD 扫盲篇<转载>
来源:互联网 发布:sql被挂起的解决方法 编辑:程序博客网 时间:2024/06/06 01:06
GCD 扫盲篇
GCD有四个概念:串行队列、并行队列、同步、异步四者。
如下简介:
这里不仅给出了不确定性,而且也给出了确定性。对于初学者而言,有时候因为那些不确定的东西所造成的疑问会像没有闸却在疾驰的汽车一样让人惊慌失措,而“确定性”就如同这救命的车闸一样,它能让你豁然开朗。
dispatch_group_wait
,而 group 指的是所有线程,包括主线程。不一定是多线程异步不会等待任务完成才返回,会立即返回。异步是多线程的代名词,因为必定会开启新的线程,线程的申请是由异步负责,起到开分支的作用。--串行队列任务依次执行同一时间队列中只有一个任务在执行,每个任务只有在前一个任务执行完成后才能开始执行。你不知道在一个Block(任务)执行结束到下一个Block(任务)开始执行之间的这段时间时间是多长,并行队列任务并发执行你唯一能保证的是,这些任务会按照被添加的顺序开始执行。但是任务可以以任何顺序完成你不知道在执行下一个任务是从什么时候开始,或者说任意时刻有多个Block(任务)运行,这个完全是取决于GCD。全局队列隶属于并行队列不要与 barrier 栅栏方法搭配使用, barrier 只有与自定义的并行队列一起使用,才能让 barrier 达到我们所期望的栅栏功能。与 串行队列或者 global 队列 一起使用,barrier 的表现会和 dispatch_sync 方法一样。 主队列隶属于串行队列不能与 sync 同步方法搭配使用,会造成死循环 串行队列、并行队列、同步、异步四者的组合:
GCD提供了dispatch queues(调度队列)来执行代码段,这些队列以FIFO(先进先出)的方式来管理你用GCD提交的任务。这保证了你先提交的任务现执行,即第一个任务添加到队列中就第一个开始执行,第二个添加的任务将第二个执行,知道队列的最后一个任务。
参考链接: Why can't we use a dispatch_sync on the current queue?
串行队列中的同步与异步的区别
串行队列能确保顺序执行任务,他们两个的唯一区别在于dispatch_sync
只会在 block 完全执行完之后返回,dispatch_async
不能确保会在 block 完全执行完之后返回,唯一能确定的是会在被添加到queue 队列后返回。
下面的代码:
dispatch_async(_serialQueue, ^{ printf("1"); });printf("2");dispatch_async(_serialQueue, ^{ printf("3"); });printf("4");
可能会打印 2413
、 2143
、 1234
,但有一点是可以确认的: 1
总是在 3
之前。
可能的打印:
1234----------24131234----------2413
然而下面的代码:
dispatch_sync(_serialQueue, ^{ printf("1"); });printf("2");dispatch_sync(_serialQueue, ^{ printf("3"); });printf("4");
总会打印:1234
参考链接: Difference between dispatch_async and dispatch_sync on serial queue?
0 0
- GCD 扫盲篇<转载>
- 转载:GCD优先级子队列扫盲
- 指纹识别技术综述(扫盲篇)(转载)
- 【转载】函数式编程扫盲篇
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- GCD优先级子队列扫盲
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- GCD串行并发队列扫盲
- 并发多任务编程 - GCD 初学者扫盲
- GCD小结(转载)
- [转载]iOS_多线程GCD
- 转载--- GCD多线程开发
- 扫盲:公钥、私钥、数字证书的概念【转载】
- 【转载】多线程GCD的使用
- (转载)Objective C GCD介绍
- GPRS扫盲篇
- vs2010 调试时提示调试信息不能生成或不匹配
- ADB shell出现error:device offline提示
- pgrouting最短路径
- (PHP)用cURL访问HTTPS资源
- BPMN2.0-概要
- GCD 扫盲篇<转载>
- 关系数据库 加 AsyncTask
- Alibaba-AndFix Bug热修复框架的使用
- Split分隔字符串几种方式
- windows平台下载android源码
- hdu2028
- iOS开发之集成支付宝
- HTML 5 Canvas应用场景
- NIO学习系列笔记(1)