因为是区别在于线程安全所以勉强可以算作是个多线程的面试题吧
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