1、NSLock
NSLock是对mutex普通锁的封装,可以通过 GNUstep源码 中的NSLock.m查看:
+ (void) initialize{......pthread_mutexattr_init(&attr_normal);pthread_mutexattr_settype(&attr_normal, PTHREAD_MUTEX_NORMAL);......pthread_mutex_init(&deadlock, &attr_normal);......}}
有如下API:
- (void)NSLockAPI {// 初始化NSLock *lock = [[NSLock alloc] init];// 加锁[lock lock];// 解锁[lock unlock];// 尝试加锁[lock tryLock];// 在指定时间内加锁[lock lockBeforeDate:[NSDate dateWithTimeIntervalSinceNow:1]];}
应用举例:
- (void)__saleTicket {[self.ticketLock lock];[super __saleTicket];[self.ticketLock unlock];}
2、NSRecursiveLock
NSRecursiveLock也是对mutex递归锁的封装,API跟NSLock基本一致,可以通过 GNUstep源码 中的NSLock.m查看:
+ (void) initialize{......pthread_mutexattr_init(&attr_recursive);pthread_mutexattr_settype(&attr_recursive, PTHREAD_MUTEX_RECURSIVE);......}
