GCD全解-dispatch_queue-队列创建

简介: GCD全解-dispatch_queue-队列创建

1、串行队列


1、DISPATCH_QUEUE_SERIAL


/// 用于创建按先进先出(FIFO)顺序串行调用块的调度队列
#define DISPATCH_QUEUE_SERIAL NULL


2、dispatch_get_main_queue()


/// 绑定到主线程的默认队列。
dispatch_queue_main_t
dispatch_get_main_queue(void)
{
  return DISPATCH_GLOBAL_OBJECT(dispatch_queue_main_t, _dispatch_main_q);
}


2、并行队列


1、DISPATCH_QUEUE_CONCURRENT


/// 可以并发调用块并支持使用dispatch barrier API提交的障碍块的调度队列。
#define DISPATCH_QUEUE_CONCURRENT \
  DISPATCH_GLOBAL_OBJECT(dispatch_queue_attr_t, \
  _dispatch_queue_attr_concurrent)


2、dispatch_get_global_queue(queue_priority, 0);


/** 返回一个已知全局并发队列。已知的全局并发队列不能被修改。
* identifier:队列优先级标识
* flags: 默认传入0就好了
*/
dispatch_queue_t dispatch_get_global_queue(long identifier, unsigned long flags);
/// 全局并发队列由它们的优先级标识,优先级映射到以下几个级别:
#define DISPATCH_QUEUE_PRIORITY_HIGH 2
#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
#define DISPATCH_QUEUE_PRIORITY_LOW (-2)
#define DISPATCH_QUEUE_PRIORITY_BACKGROUND INT16_MIN


3、创建Queue

dispatch_queue_create(@”字符串标签”,DISPATCH_QUEUE_CONCURRENT / DISPATCH_QUEUE_SERIAL )



/**创建Queue
* label:字符串标签,可以为空。
* attr:队列类型:
* 1、传入DISPATCH_QUEUE_SERIAL or a NULL创建的是顺序执行的串行队列;
* 2、传入DISPATCH_QUEUE_CONCURRENT创建的是并发队(有点像是global concurrent queues)
*/
dispatch_queue_t dispatch_queue_create(const char *_Nullable label, dispatch_queue_attr_t _Nullable attr);

示例:


//获取主队列
dispatch_queue_t mainQueue = dispatch_get_main_queue();
//全局并发队列
dispatch_queue_t queue4 = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//串行队列:DISPATCH_QUEUE_SERIAL|NULL
dispatch_queue_t queue3 = dispatch_queue_create("queue3", DISPATCH_QUEUE_SERIAL|NULL);
//并行队列:DISPATCH_QUEUE_CONCURRENT
dispatch_queue_t queue4 = dispatch_queue_create("queue4", DISPATCH_QUEUE_CONCURRENT)
相关文章
|
6月前
|
算法 编译器 C++
priority_queue简单实现(优先级队列)(c++)
priority_queue介绍 pri_que是一个容器适配器,它的底层是其他容器,并由这些容器再封装而来。类似于heap的结构。默认为大堆。
57 0
|
图形学
UnityMainThreadDispatcher.Instance().Enqueue运行原理
UnityMainThreadDispatcher.Instance().Enqueue运行原理
557 1
|
前端开发 Java 开发者
Dispatch 设计| 学习笔记
快速学习 Dispatch 设计。
130 0
Dispatch 设计| 学习笔记
|
iOS开发
iOS多线程的初步研究-- dispatch同步
GCD提供两种方式支持dispatch队列同步,即dispatch组和信号量。
182 0
GCD全解-dispatch_after/dispatch_time-t延迟操作
GCD全解-dispatch_after/dispatch_time-t延迟操作
332 0
|
安全 调度
GCD全解-dispatch_once-创建单例
单例是一种类,该类只在第一次用的时候实例化一个对象,后期直接调用此对象。 在Foundation框架中比如NSFileManger和NSNotificationCenter,分别通过它们的类方法defaultManager和defaultCenter获取。尽管不是严格意义的单例,这些类方法返回一个可以在应用的所有代码中访问到的类的共享实例。
164 0
GCD全解-dispatch_barrier_sync/async-栅栏函数
GCD全解-dispatch_barrier_sync/async-栅栏函数
279 0
|
安全 iOS开发
GCD全解-dispatch-多个网络请求处理
在开发中,我们会经常遇到这样的需求,需要我们同时做多个网络请求,然后架构所需数据,再统一渲染页面。
237 0
|
前端开发 Java 开发者
Dispatch设计|学习笔记
快速学习Dispatch设计
Dispatch设计|学习笔记