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 · 639 阅读 · 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 · 489 阅读 · 0 评论 -
GCD 中的组
GCD 中的组 在 GCD 中,使用 dispatch_group_t 可以很方便的将任务分组,如果存在一个任务需要在一系列任务完成后才可以执行,那么使用组的相关方法则十分方便。 使用 dispatch_group_t dispatch_group_create(void); 函数创建一个 dispatch_group_t 类型的变量,即组。 然后使用下面的方法为创建的组关联任务,指定的任务将在指...原创 2019-02-25 23:36:02 · 181 阅读 · 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 · 914 阅读 · 0 评论 -
GCD 中的队列
GCD 中的队列 GCD 所提供的 API 虽然简单,但是十分强大。其提供了两种类型的队列,一种串行队列,一种并行队列。 提交到串行队列中的 block 任务遵循先进先出的顺序,由系统维护的线程池中的线程执行。虽然任务的执行线程是不确定的, 但是同一个时刻,同一个队列中的任务只会有一个任务在执行。但是,不同串行队列中的任务是并行的。 提交到并行队列中的任务则不同,系统会根据需要创建线程,并行执行队...原创 2019-03-17 21:33:28 · 1368 阅读 · 0 评论