
GCD
那夜的星空分外清澈
学如逆水行舟,不进则退。
展开
-
GCD 中的类型
GCD 中的类型在 GCD 中涉及的变量类型有:dispatch_block_t、dispatch_function_t、dispatch_time_t、dispatch_object_t、dispatch_queue_t、dispatch_group_t 等。理解这些变量的定义有助于我们理解 GCD 的使用方式以及实现逻辑。由 dispatch_block_t 的定义 typedef ...原创 2019-02-21 23:38:58 · 668 阅读 · 0 评论 -
GCD 中的 Block
GCD 中的 Block在 GCD 中,可以使用 block.h 中的函数实现 block 的创建、执行和取消。dispatch_block_t dispatch_block_create(dispatch_block_flags_t flags, dispatch_block_t block);该方法会根据提供的 block 以及 flags 标识,在堆上创建一个新...原创 2019-03-04 22:04:50 · 527 阅读 · 0 评论 -
GCD 中的组
GCD 中的组在 GCD 中,使用 dispatch_group_t 可以很方便的将任务分组,如果存在一个任务需要在一系列任务完成后才可以执行,那么使用组的相关方法则十分方便。使用 dispatch_group_t dispatch_group_create(void); 函数创建一个 dispatch_group_t 类型的变量,即组。然后使用下面的方法为创建的组关联任务,指定的任务将在指...原创 2019-02-25 23:36:02 · 195 阅读 · 0 评论 -
GCD 中的时间
GCD 中的时间在 GCD 中,定义了一个类型 dispatch_time_t 来表示时间,其单位是纳秒。typedef uint64_t dispatch_time_t;从定义可知,其实际是 uint64_t 类型的别名,即一个 64 位的无符号整型值。另外,GCD 中定义了两个宏来表示当前时间点零以及无穷大的时间。#define DISPATCH_TIME_NOW (0ull)#d...原创 2019-03-17 21:23:05 · 973 阅读 · 0 评论 -
GCD 中的队列
GCD 中的队列GCD 所提供的 API 虽然简单,但是十分强大。其提供了两种类型的队列,一种串行队列,一种并行队列。提交到串行队列中的 block 任务遵循先进先出的顺序,由系统维护的线程池中的线程执行。虽然任务的执行线程是不确定的,但是同一个时刻,同一个队列中的任务只会有一个任务在执行。但是,不同串行队列中的任务是并行的。提交到并行队列中的任务则不同,系统会根据需要创建线程,并行执行队...原创 2019-03-17 21:33:28 · 1442 阅读 · 0 评论