iOS锁机制

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();

}

...

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容