多线程
2018-08-16 本文已影响0人
59c4116645d0
GCD
一 :同步/异步 和 串行/并发
二:dispatch_barrier_async 解决多读单写的问题
三:dispatch_group 并发执行多个任务,完成后执行某个任务
NSOoeration的优点
·添加任务依赖
·任务执行状态控制
1 isReady
2 isExecuting
3 isFinished
4 isCancelled
应该怎么样控制NSOperation的状态?
如果只重写 main 方法,底层控制变更任务执行完成状态以及任务退出
如果重写 start 方法,自行控制任务状态
系统是怎样益处一个isFinished=Yes的NSOperation的?
系统是通过kvo的方式控制
·最大并发量控制
NSThread
多线程和锁
iOS当中都有哪些锁?
·@synchronized
一般用来创建单例对象的时候使用,保证在多线程环境下创建对象是唯一的
·atomic
修饰属性的关键字
对被修饰对象进行原子性操作(不负责使用)
·OSSpinLock 自旋锁
循环等待访问,不释放当前资源
用于轻量级数据访问,简单的int值 +1/-1操作
·NSRecursiveLock 递归锁
不会产生死锁问题·NSLock 用来解决线程同步问题 共享资源互斥/同步
·dispatch_semaphore_t 信号量 共享资源互斥/同步
dispatch_semaphore_create(1);
dispatch_semaphore_wait(semaphore,DISPATCH_TIME_FOREVER);
dispatch_semaphore_signal(semaphore);