iOS 常见知识点(三):Lock

时间:2023-03-09 02:40:22
iOS 常见知识点(三):Lock

iOS 常见知识点(一):Runtime

iOS 常见知识点(二):RunLoop

锁是最常用的同步工具。一段代码段在同一个时间只能允许被有限个线程访问,比如一个线程 A 进入需要保护代码之前添加简单的互斥锁,另一个线程 B 就无法访问,只有等待前一个线程 A 执行完被保护的代码后解锁,B 线程才能访问被保护代码。

iOS 中的八大锁

NSLock

@protocol NSLocking

- (void)lock;

- (void)unlock;

@end

@interface NSLock : NSObject  {

<a href='http://www.jobbole.com/members/kaishu6296'>@private</a>

void *_priv;

}

- (BOOL)tryLock;

- (BOOL)lockBeforeDate:(NSDate *)limit;

@property (nullable, copy) NSString *name NS_AVAILABLE(10_5, 2_0);

@end

NSLock 遵循 NSLocking 协议,lock 方法是加锁,unlock 是解锁,tryLock 是尝试加锁,如果失败的话返回 NO,lockBeforeDate: 是在指定Date之前尝试加锁,如果在指定时间之前都不能加锁,则返回NO。

举个