进程:正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间; 线程:线程是进程中一个独立的执行路径(控制单元);一个进程中至少包含一条线程,即主线程。 队列:dispatch_queue_t,一种先进先出的数据结构,线程的创建和回收不需要程序员操作,由队列负责。 ...
分类:
移动开发 时间:
2019-09-06 16:10:34
阅读次数:
127
?可以看到,在queue里的任务,不仅仅是一个函数,也可以是一个其他的queue。 下面是一个例子。?全局队列的处理一般一个全局队列有多个线程,这些个线程会遍历并处理链表里的任务。对于全局队列,当一个任务被抛进来后,会尽快处理掉。如果有空闲线程,那么这个空闲线程会处理这个任务。如果没有空闲线程,那么... ...
分类:
其他好文 时间:
2019-04-20 11:30:08
阅读次数:
130
其实我们在通过NSOperation和GCD进行开发过程中,会发现两者执行的方式有许多相似之处,NSOperation和GCD参照对比,NSOperationQueue和dispatch_queue参照对比,但是两者之间还是有许多差别的,具体区别: GCD的核心是C语言写的系统服务,执行和操作简单高 ...
分类:
其他好文 时间:
2019-02-23 10:51:15
阅读次数:
133
需求: 有4个任务, 需要开启多条线程去执行。 有一个特殊任务0, 需要在1,2任务执行完后, 再执行3, 4任务。 dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT); dispatch ...
分类:
其他好文 时间:
2019-02-22 00:29:59
阅读次数:
245
首先看个产生死锁的代码-(void)syncMain{ //获得主队列 dispatch_queue_t queue = dispatch_get_main_queue(); NSLog(@"start"); //同步函数 dispatch_sync(queue, ^{ NSLog(@" %@",[ ...
分类:
其他好文 时间:
2019-02-19 22:23:29
阅读次数:
222
GCD(Grand Central Dispatch),主要用于多线程编程。它屏蔽了繁琐的线程实现及管理细节,将其交由系统处理。开发者只需要定义任务block(在底层被封装成dispatch_continuation_t结构体),并提交到正确的dispatch queue中。GCD包含dispatc ...
分类:
其他好文 时间:
2019-01-11 11:31:23
阅读次数:
242
dispatch_source_create创建定时器 //定时器 dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); // 创建定时器,本身也是个oc对象,必须设置为全局,不 ...
Grand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用 的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,DCD就能生成 必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以 ...
分类:
编程语言 时间:
2018-09-17 19:32:48
阅读次数:
226
//多个异步请求完成后汇总结结果(任务执行不区分先后顺序) dispatch_queue_t queue = dispatch_get_global_queue(0,0); dispatch_group_t group = dispatch_group_create(); dispatch_grou ...
分类:
其他好文 时间:
2018-08-10 10:52:31
阅读次数:
163
有时候我们很希望知道当前执行的queue是谁,比如UI操作需要放在main queue中执行。如果可以知道当前工作的queue是谁,就可以很方便的指定一段代码操作在特定的queue中执行。这种做法让GCD方法达到可重入效果: dispatch_queue_set_specific 标记队列 stat ...
分类:
其他好文 时间:
2018-06-22 14:46:15
阅读次数:
163