1.GCD的核心是:将任务添加到队列;
2.GCD中的任务是使用block封装的;
3.任务的取出遵循先进先出,后进后出的原则;GCD会自动的将队列中的人物取出,放到对应的线程中执行;
4.GCD会自动的管理线程的生命周期(创建线程,调度任务,线程销毁);线程在一定的时间内可以复用;
5.GCD的队列分为两大类型:
串行队列(serial dispatch queue):任务一个接一个执...
分类:
编程语言 时间:
2016-05-09 07:02:02
阅读次数:
214
在IOS开发中,多线程的实现方式主要有三种,NSThread、NSOperation和GCD,我前面博客中对NSOperation和GCD有了较为详细的实现,可以参考《iOS多线程开发——NSOperation/NSOperationQueue浅析》《iOS多线程开发——GCD的使用与多线程开发浅析》。以及对于多线程中的同步异步,并行串行等概念,我在《GCD实践——串行队列/并发队列与iOS多线程...
分类:
移动开发 时间:
2016-05-09 01:44:14
阅读次数:
215
今天就 iOS 的多线程 GCD 的使用做了一些总结和理解。
GCD,Grand Central Dispatch,是Apple开发的一个多核编程的解决方法。
GCD其实就是创建/获取一个队列,在 Block 块或方法(函数)里写需要执行的任务代码块,然后将任务放到合适的队列里执行。GCD队列呢,分三种:主队列(串行队列)、全局队列(并行队列)、自定义队列(自定义)。任务执行方法...
分类:
移动开发 时间:
2016-05-07 08:47:32
阅读次数:
207
GCD多线程下,实现线程同步的方式有如下几种:
1.串行队列 2.并行队列 3.分组 4.信号量
实例: 去网上获取一张图片并展示在视图上. 实现这个需求,可以拆分成两个任务,一个是去网上获取图片,一个是展示在视图上. 这两个任务是有关联的,所以需要同步处理.
下面看这几种方式如何实现.
一、
1.串行队列
1.1[GCD相关:]
(1)GCD...
分类:
移动开发 时间:
2016-05-06 14:48:30
阅读次数:
256
本文是对以往学习的多线程中知识点的一个整理。 多线程中的队列有:串行队列,并发队列,全局队列,主队列。 执行的方法有:同步执行和异步执行。那么两两一组合会有哪些注意事项呢? 如果不是在董铂然博客园看到这边文章请 点击查看原文 提到多线程,也就是四种,pthread,NSthread,GCD,NSOp ...
分类:
移动开发 时间:
2016-04-28 09:29:38
阅读次数:
269
//开启子线程下载图片 //1.获取一个全局串行队列 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); __weak typeof(self) weakSelf = self ...
分类:
编程语言 时间:
2016-04-26 09:37:52
阅读次数:
149
串行与并行 在使用GCD的时候,我们会把需要处理的任务放到Block中,然后将任务追加到相应的队列里面,这个队列,叫做Dispatch Queue。然而,存在于两种Dispatch Queue,一种是要等待上一个执行完,再执行下一个的Serial Dispatch Queue,这叫做串行队列;另一种 ...
分类:
其他好文 时间:
2016-04-21 20:12:38
阅读次数:
180
无论队列中所指定的执行的函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务要不要开线程由执行任务决定
dispatch_sync 不开dispatch_async 开
开几条线程由谁决定
串行队列,异步执行,开几条,由底层线程池决定串行队列,同步执行,不开线程
串行队列,异步执行任务
- (void)gcdDemo1 {
for (NSInt...
分类:
编程语言 时间:
2016-04-19 20:05:59
阅读次数:
271
/*************异步函数 + 并发队列:可以同时开启多条线程***************/ /*************同步函数 + 并发队列:不会开启新的线程***************/ /*************异步函数 + 串行队列:会开启新的线程,但是任务是串行的,执行完 ...
分类:
编程语言 时间:
2016-04-19 13:55:19
阅读次数:
141
GCD的队列可以分为2大类型,分别为串行队列和并发队列
串行队列(Serial
Dispatch Queue):
一次只调度一个任务,队列中的任务一个接着一个地执行(一个任务执行完毕后,再执行下一个任务)
创建一个队列
dispatch_queue_t q
= dispatch_queue_create(const char *label, ...
分类:
移动开发 时间:
2016-04-16 19:03:34
阅读次数:
174