多线程

GCD

  • 同步/异步 和串行/并发
  • dispatch_barrier_async
  • dispatch_group

同步/异步和串行/并发

  • dispatch_sync(serial_queue, ^{ task })
  • dispatch_async(serial_queue, ^{ task })
  • dispatch_sync(concurrent_queue, ^{ task })
  • dispatch_async(concurrent_queue, ^{ task })

如何用GCD实现多读单写

dispatch_group使用

NSOperation

需要和NSOperationQueue配合实现多线程方案

  • 添加任务依赖
  • 任务执行状态控制
  • 最大并发量

任务执行状态控制

  • isReady
  • isExcuting
  • isFinished
  • isCancelled

状态控制

  • 如果只重写main方法, 底层控制变更任务执行完成状态,以及任务退出
  • 如果重写了start方法, 自行控制任务状态

iOS当中都有哪些锁

  • @synchronized(一般创建单例对象时候使用)
  • atomic(属性关键子)
  • OSSpinLock (循环等待询问,不释放当前资源, 用于轻量级数据方法, 存在优先级反转问题)
  • NSRecursiveLock
  • NSLock
  • dispatch_semphore_t(create/wait/signal)