iOS锁机制

2023-10-01  本文已影响0人  麦田的守望者Sunshine

atomic(原子锁)

atomic适用于OC中属性的修饰符,其自带一把自旋锁,但是这个一般基本不使用,都是使用的nonatomic;setter方法会根据修饰符调用不同方法,其中最后会统一调用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();

}

...

}

上一篇下一篇

猜你喜欢

热点阅读