iOS多线程开发:几个容易被忽略的细节
发布时间:2019-06-07 08:24:23 所属栏目:评论 来源:Eternal_Love
导读:副标题#e# 一般情况下,iOS开发者只要会使用GCD、@synchronized、NSLock等几个简单的API,就可以应对大部分多线程开发了,不过这样是否真正做到了多线程安全,又是否真正充分利用了多线程的效率优势呢?看看以下几个容易被忽略的细节。 读者写者问题(Readers
这里的cache由于使用了LRU淘汰策略,每次在读cache的同时,会将本次的cache放到数据结构的最前面,从而延缓最近使用的cache被淘汰的时机,因为每次读操作的同时也会发生写操作,所以这里直接使用pthread_mutex互斥锁,而没有使用读者写者锁。 综上所述,如果你所遇到的多线程读写场景符合:
都应该考虑使用读者写者锁来进一步提升并发率。 注意: (1)读者写者问题包含“读者优先”和“写者优先”两类:前者表示读线程只要看到有其他读线程正在访问文件,就可以继续作读访问,写线程必须等待所有读线程都不访问时才能写文件,即使写线程可能比一些读线程更早提出申请;而写者优先表示写线程只要提出申请,再后来的读线程就必须等待该写线程完成。GCD的barrier属于写者优先的实现。具体请参考文档[2]。 (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |