欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

atomic和nonatomic

时间:2023-06-09

因为是区别在于线程安全所以勉强可以算作是个多线程的面试题吧

atomic是原子性操作,也是所谓的线程安全

nonatomic是非原子操作,本质是必须加锁才能线程安全

if (!atomic) { oldValue = *slot; *slot = newValue;} else { spinlock_t& slotlock = PropertyLocks[slot]; slotlock.lock(); oldValue = *slot; *slot = newValue; slotlock.unlock();}

其实也不用过多解释,看源码就知道了,这里会判断是否是atomic,是的话,就加把锁,同一时间只能一个线程进行修改

不建议用atomic,因为哪怕正常的调用也会加锁了,这代码效率就很低了,哪里需要就哪里加锁就好l

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。