iOS开发中OSSpinLock的代替者os_unfair_lock

0.os_unfair_lock.png

https://www.jianshu.com/p/994aef4bad81
这篇文章讲了自旋锁OSSpinLock的使用以及使用它存在的问题,如图所示我们也看到了苹果在iOS10之后使用os_unfair_lock代替了OSSpinLock。

os_unfair_lock

之前讲过锁有两种形式一种是忙等就像OSSpinLock这种自旋锁,一种是让线程睡眠。os_unfair_lock就是让线程睡眠,所以它避免了自旋锁导致的优先级反转问题。
通过代码看一下os_unfail_lock的使用。

  - (void)sellTickets{
// 加锁
os_unfair_lock_lock(&_ticketsLock);
self.tickets --;
NSLog(@"剩余票数:%lu===%@", self.tickets, [NSThread currentThread]);
// 解锁
os_unfair_lock_unlock(&_ticketsLock);
 }

你可能感兴趣的:(iOS开发中OSSpinLock的代替者os_unfair_lock)