Atomic 和 Non-Atomic的区与别

2018-05-20  本文已影响0人  Leon_Jiang

一 Atomic: 是默认的
1 会保证 CPU 能在别的线程来访问这个属性之前,先执行完当前流程
2 速度不快,因为要保证操作整体完成
二 Non-Atomic:不是默认的
1 更快
2 线程不安全
3 如有两个线程访问同一个属性,会出现无法预料的结果

三 详细区别:(假如有个属性 name)
1 属性 name 仅仅是(读/写)安全的!
1)假如在执行[self name]方法的时候执行[self setName:@"A"];那么就会线程等待,等[self name]执行完后再执行[self setName:@"A"]。(其实就是串行执行)
2)假如在执行[self name]的时候执行[name release];那么就会造成crash!因为他只保证读写安全!(在这里[self name]与[name release]并发执行)
2 nonatomic 很简单就是 并发执行 ,所以不保证安全!

上一篇下一篇

猜你喜欢

热点阅读