请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

多读单写疑惑

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

正在回答

1回答

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

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

1 回复 有任何疑惑可以回复我~
  • 提问者 黄花菜 #1
    谢谢老师,受益匪浅!
    回复 有任何疑惑可以回复我~ 2018-09-21 11:17:42
  • 你好老师,请问为什么立刻返回给调用方就要用dispatch_sync?dispatch_async不是立刻吗
    回复 有任何疑惑可以回复我~ 2019-01-22 22:30:11
  • Sync的意思是在当前线程执行,async的意思是立刻把block加入到队列,但是异步到其他线程执行
    回复 有任何疑惑可以回复我~ 2019-01-22 22:32:27
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信