//用block只有两种:同步执行/异步执行(参数1:队列;参数二:任务) dispatch_async(dispatch_get_global_queue(0, 0),^{ });//异步在新的线程中执行任务,具备开启新线程能力,能跳过该代码执行后面代码 dispatch_sync(dispatc ...
分类:
其他好文 时间:
2016-09-11 20:09:54
阅读次数:
200
在本系列的第一部分中,你已经学到超过你想像的关于并发、线程以及GCD 如何工作的知识。通过在初始化时利用 dispatch_once,你创建了一个线程安全的 PhotoManager 单例,而且你通过使用 dispatch_barrier_async 和 dispatch_sync 的组合使得对 P ...
分类:
其他好文 时间:
2016-09-10 22:11:33
阅读次数:
200
前言 首先提出一些问题: dispatch_async 函数如何实现,分发到主队列和全局队列有什么区别,一定会新建线程执行任务么? dispatch_sync 函数如何实现,为什么说 GCD 死锁是队列导致的而不是线程,死锁不是操作系统的概念么? 信号量是如何实现的,有哪些使用场景? dispatc ...
分类:
其他好文 时间:
2016-09-05 09:05:30
阅读次数:
160
- (void)addObserver:(__weak NSObject *)observer forContext:(void *)context { NSValue *valueContext = [NSValue valueWithPointer:context]; dispatch_sync ...
分类:
其他好文 时间:
2016-06-20 18:25:46
阅读次数:
141
首先要确定:一个线程只能执行一个任务,执行完才会执行另一个任务 同步和异步 dispatch_sync 是同步的方式执行任务dispatch_async 是异步的方式执行任务同步和异步的区别同步:在当前线程中执行(不会开辟新线程,是在当前线程执行,一般使用同步执行任务会立马执行,‘写了跟没写一样’) ...
分类:
其他好文 时间:
2016-05-29 18:29:09
阅读次数:
263
1-创建、获取队列
主要测试
1.dispatch_queue_create
2.dispatch_sync
3.dispatch_async
4.dispatch_get_main_queue
5.dispatch_get_global_queue//
// ViewController.m
// GCDDemo
//
// Created by gongzixiaobai on...
分类:
其他好文 时间:
2016-05-03 18:37:40
阅读次数:
293
无论队列中所指定的执行的函数是同步还是异步,都会等待前一个任务执行完成后,再调度后面的任务要不要开线程由执行任务决定
dispatch_sync 不开dispatch_async 开
开几条线程由谁决定
串行队列,异步执行,开几条,由底层线程池决定串行队列,同步执行,不开线程
串行队列,异步执行任务
- (void)gcdDemo1 {
for (NSInt...
分类:
编程语言 时间:
2016-04-19 20:05:59
阅读次数:
271
1.首先看一下官方文档的解释,这个block的队列是同步执行的,不像异步,这个方法直到block执行完毕才会返回2.主线程一旦开启,就要先把自己的代码执行完成之后,才去执行加入到主队列中的任务死锁原因:a) dispatch_sync这个方法要等到block的执行完之后,才返回b) 主线程一旦开启,...
分类:
移动开发 时间:
2016-01-21 09:09:09
阅读次数:
209
多线程之-GCDGrand Centeral Dispatch(宏大的中枢调度器)GCD中有2个核心概念任务:执行什么操作队列:用来存放任务遵循FIFO(先进先出)原则执行任务同步方法: dispatch_sync异步方法: dispatch_async同步和异步的区别同步:只能在当前线程中执行任务...
分类:
编程语言 时间:
2016-01-03 23:46:31
阅读次数:
240
dispatch_sync: 同步,不具备开启线程的能力dispatch_async:异步,具备开启线程的能力并发队列:多个任务可以同时执行穿行队列:一个任务执行完后,再执行下一个任务。core foundation 和foundation 框架之间的数据转换需要桥接 _bridge NSstri....
分类:
编程语言 时间:
2015-12-23 09:19:47
阅读次数:
146