多线程底层原理

2019-05-10  本文已影响0人  iOS白水

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:循环等待访问。

参考:
http://www.cocoachina.com/ios/20190606/27040.html

上一篇 下一篇

猜你喜欢

热点阅读