atomic 和noatomic

atomic和nonatomic是Objective-C中属性声明的关键词,与多线程有关。多线程通常用于改善性能和用户体验,如在下载时避免UI阻塞。在iOS中,主线程用于UI更新,而耗时任务应放于子线程。异步调用虽能避免阻塞,但过多并发可能导致资源竞争。atomic属性可确保多线程中变量设置的线程安全,但可能影响性能,因此推荐尽量减少多线程和并发请求,以优化性能。
摘要由CSDN通过智能技术生成

曾经面试时候被被问到最多的问题是 nonatomic是啥意思, 当时对这个东西理解有限,只是知道原子操作和非原子操作的区别。

OK, 其实这个东西是和多线程有关系的。

你在什么时候会用到多线程?理论我们都懂,但是用的好不好就看理解深不深了,大多时候我们会在download的时候用到这个东西,但是远远不是如此,用多线程还是为了提高性能和用户体验,对于iOS来说主线程用来刷新UI,所以如果我们要做一件耗时长的事情,同时不希望用户UI被block,我们几乎没有选择就是使用子线程(多线程)了,但是,这种情况其实不多。因为很耗时间的事情在iOS这种移动设备上最常见的就是webservice call,因为网络的问题我们需要等待,但是在这个级别上早就有各种优秀的算法和框架进行了优化,最常见的就是异步访问。

很早时候就知道多线程和异步,那个时候很不明白线程阻塞和同步到底有什么区别,现在明白了,区别就是多线程和单线程...阻塞说的是多个线程争抢一个资源,为了保证写数据不出乱子,只好让一个线程独占该数据,其他线程排队等着它,这个状态叫阻塞,而同步是跳出线程概念的一种机制,本质上说同步和异步可能也是通过使用多线程完成的,但是两者没有任何必然联系,甚至从逻辑上完全独立的,框架为我们实现了同步方法,那么这个方法在我们调用时没有返回结果前是绝对不会继续往下执行的,而异步方法就是说不让程序等着结果(其实也就是不阻塞当前线程,注意这里的阻塞的原因和行为与线程同步的阻塞完全不同,这里的阻塞是阻塞了当前执行的线程,而不是让其他线程阻塞等着自己)

我们经常使用异步用于webservice call,为的是在进行某个网络请求&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值