atomic(原子鎖)
atomic適用于OC中屬性的修飾符饮焦,其自帶一把自旋鎖怕吴,但是這個一般基本不使用,都是使用的nonatomic县踢;setter方法會根據(jù)修飾符調(diào)用不同方法转绷,其中最后會統(tǒng)一調(diào)用reallySetProperty方法,其中就有atomic和非atomic的操作
static inline void reallySetProperty(id self, SEL _cmd, id newValue, ptrdiff_t offset, bool atomic, bool copy, bool mutableCopy) {
...
id *slot = (id*) ((char*)self + offset);
...
if (!atomic) {
//未加鎖
oldValue = *slot;
*slot = newValue;
} else {
//加鎖
spinlock_t& slotlock = PropertyLocks[slot];
slotlock.lock();
oldValue = *slot;
*slot = newValue;
slotlock.unlock();
}
...
}