1.多线程技术方案:
image.png
2.performSelector
要开启RunLoop才能开启
3.多读单写
多线程: 异步+加锁(并发队列+dispatch_barrier_async )
多线程: 异步+加锁 (串行队列 )
- (id)objectForKey:(NSString *)key
{
__block id obj;
// 同步读取指定数据 立马得到结果的
dispatch_sync(concurrent_queue, ^{
obj = [userCenterDic objectForKey:key];
});
return obj;
}
- (void)setObject:(id)obj forKey:(NSString *)key
{
// 异步栅栏调用设置数据
dispatch_barrier_async(concurrent_queue, ^{
[userCenterDic setObject:obj forKey:key];
});
}
4.NSOperation
添加任务依赖;任务执行状态控制;最大并发量
5.锁
NSLock\atomic\OSSpinlock\NSRecuri\NSLock\Dispatch_
@Sy单例对象
atomic:赋值。 直接add、delete 是不保证变量。
OSSpinlock:循环等待访问。