一、NSLock
- NSLock 是对 pthread_mutex 普通锁的封装。
- 遵守 NSLocking 协议
- 它的两个方法
- (BOOL)tryLock;
- (BOOL)lockBeforeDate:(NSDate *)limit;
-
- (BOOL)lockBeforeDate:(NSDate *)limit;
- 传入一个时间,在这个时间之前如果能等到这把锁放开的话,就给这把锁加锁。如果时间没到,就一直在这里等。由于 NSLock 是互斥锁,所以等待的时间就是睡觉。如果时间到了,还没有等到锁。就加锁失败。
- (BOOL)lockBeforeDate:(NSDate *)limit;
-
- (BOOL)tryLock;
- 尝试加锁
- (BOOL)tryLock;
-
NSLocking 协议里面有两个方法
/// 加锁
- (void)lock;
- /// 解锁
- (void)unlock;
- 也就是说 NSLock 里面有 四个方法。
代码:
二、NSRecursiveLock
NSRecursiveLock也是对mutex递归锁的封装,API跟NSLock基本一致
三、NSCondition
- 是对 mutex 和 cont 的封装