线程是执行程序的最基本的单元,它有自己的栈和寄存器
GCD
Grand Central Dispatch是异步执行任务的技术之一
Dispatch Queue: 是执行处理的等待队列
DisPatch Queue按照追加的顺序(先进先出FIFO,First-In-First-Out)执行处理
另外在执行处理时存在两种Dispatch Queue,
等待现在执行中处理的Serial Dispatch Queue,
不等待现在执行中处理的Concurrent Dispatch Queue
- 四种队列
- 串行队列
dispatch_queue_t q = dispatch_queue_create("xxx", DISPATCH_QUEUE_SERIAL);
- 并行队列
dispatch_queue_t q = dispatch_queue_create("xxx", DISPATCH_QUEUE_CONCURRENT);
- 全局并行队列
dispatch_get_global_queue(long identifier, unsigned long flags);
- 主队列
dispatch_get_main_queue()
- 两个函数
- 同步函数
dispatch_sync(<#dispatch_queue_t _Nonnull queue#>, <#^(void)block#>)
- 异步函数
dispatch_async(<#dispatch_queue_t _Nonnull queue#>, <#^(void)block#>)
参考
- 两种执行方式
- 同步执行
- 异步执行
并发:多个任务同时发生,需要被处理
并行: 同时处理多个任务的能力
串行:任务必须按顺序来,一个一个执行,执行完当前任务才能执行下一个
GCD方法
dispatch_queue_get_label()获取队列的名字,如果队列没有名字,返回NULL
GCD实现
通常, 应用程序中编写的线程管理用的代码要在系统级实现,在系统级即iOS 和 OS X的核心XNU内核级上实现
网友评论