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)