iOS Stack

多线程编程

2017-08-14  本文已影响4人  de7e01056dd4

线程是执行程序的最基本的单元,它有自己的栈和寄存器

GCD

Grand Central Dispatch是异步执行任务的技术之一

Dispatch Queue: 是执行处理的等待队列
    DisPatch Queue按照追加的顺序(先进先出FIFO,First-In-First-Out)执行处理
另外在执行处理时存在两种Dispatch Queue,
    等待现在执行中处理的Serial Dispatch Queue,
    不等待现在执行中处理的Concurrent Dispatch Queue
  1. 串行队列
    dispatch_queue_t q = dispatch_queue_create("xxx", DISPATCH_QUEUE_SERIAL);
  2. 并行队列
    dispatch_queue_t q = dispatch_queue_create("xxx", DISPATCH_QUEUE_CONCURRENT);
  3. 全局并行队列
    dispatch_get_global_queue(long identifier, unsigned long flags);
  4. 主队列
    dispatch_get_main_queue()
  1. 同步函数
    dispatch_sync(<#dispatch_queue_t _Nonnull queue#>, <#^(void)block#>)
  2. 异步函数
    dispatch_async(<#dispatch_queue_t _Nonnull queue#>, <#^(void)block#>)
    参考
  1. 同步执行
  2. 异步执行

并发:多个任务同时发生,需要被处理
并行: 同时处理多个任务的能力
串行:任务必须按顺序来,一个一个执行,执行完当前任务才能执行下一个

GCD方法

dispatch_queue_get_label()获取队列的名字,如果队列没有名字,返回NULL

GCD实现

通常, 应用程序中编写的线程管理用的代码要在系统级实现,在系统级即iOS 和 OS X的核心XNU内核级上实现

参考链接

iOS多线程编程
Swift 中的并发编程

上一篇 下一篇

猜你喜欢

热点阅读