多读单写疑惑

来源:8-2 dispatch_barrier_async()函数相关面试问题

黄花菜

2018-09-19

老师您好!有两个问题想请教一下您。
问题一:读操作为什么要同步读取?咱们的要求不是可以同时读吗?那不是应该使用dispatch_async方法吗?
问题二:这个多读单写需求,我用@synchronized(self) 这个锁,对get和set方法同时加锁,也能实现。这种实现方式和使用栅栏函数有什么区别吗?还请老师讲一下,谢谢老师

写回答

1回答

于海

2018-09-19

第一个问题,我觉得你对多线程的几基本概念还需要补充一下,以同步到并发队列方式才能保证同时有多个线程在读,之所以用同步是你读取的结果要立刻返回给调用方。

第二个问题,用你所说方式做并发 相当于同一时间只有一个线程在操作,即读读互斥,读写互斥,写写互斥。我们要实现的效果是读读并发,读写互斥,写写互斥。

1
8
weixin_慕工程9511653
回复
sai1024
前提是在不同的线程中,多读 我的理解是:A、B、C同时访问,它们肯定是通过不同的渠道的(在不同的线程中),即时获取所读数据。
2019-09-22
共8条回复

资深大牛带你深度剖析ios高级面试

从BAT/TMD名企真题入手,结合源码及应用,构建完整iOS知识体系

1749 学习 · 600 问题

查看课程