iOS多线程开发:几个容易被忽略的细节
发布时间:2019-06-08 16:44:27 所属栏目:业界 来源:Eternal_Love
导读:副标题#e# 一般情况下,iOS开发者只要会使用GCD、@synchronized、NSLock等几个简单的API,就可以应对大部分多线程开发了,不过这样是否真正做到了多线程安全,又是否真正充分利用了多线程的效率优势呢?看看以下几个容易被忽略的细节。 读者写者问题(Readers
@synchronized关键字会自动根据传入对象创建一个与之关联的锁,在代码块开始时自动加锁,并在代码块结束后自动解锁,语法简单明了,很方便使用,但是这也导致部分开发者过渡依赖于@synchronized关键字,滥用@synchronized(self)。如上述代码段2中的写法,在一整个类文件里,所有加锁的地方用的都是@synchronized(self),这就可能会导致不相关的线程执行时都要互相等待,原本可以并发执行的任务不得不串行执行。另外使用@synchronized(self)还可能导致死锁:
(编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |