多读单写疑惑
来源:8-2 dispatch_barrier_async()函数相关面试问题

黄花菜
2018-09-19
老师您好!有两个问题想请教一下您。
问题一:读操作为什么要同步读取?咱们的要求不是可以同时读吗?那不是应该使用dispatch_async方法吗?
问题二:这个多读单写需求,我用@synchronized(self) 这个锁,对get和set方法同时加锁,也能实现。这种实现方式和使用栅栏函数有什么区别吗?还请老师讲一下,谢谢老师
写回答
1回答
-
第一个问题,我觉得你对多线程的几基本概念还需要补充一下,以同步到并发队列方式才能保证同时有多个线程在读,之所以用同步是你读取的结果要立刻返回给调用方。
第二个问题,用你所说方式做并发 相当于同一时间只有一个线程在操作,即读读互斥,读写互斥,写写互斥。我们要实现的效果是读读并发,读写互斥,写写互斥。182019-09-22
相似问题