面试题答案
一键面试NSLock常见使用方式
- 创建NSLock对象:
NSLock *lock = [[NSLock alloc] init];
- 锁定资源:
[lock lock];
// 这里放置需要线程安全访问的共享资源代码
- 解锁资源:
[lock unlock];
实现线程安全的原理
NSLock基于信号量(Semaphore)机制实现。当一个线程调用lock
方法时,信号量值减1。如果信号量值变为0,意味着资源已被占用,当前线程会被阻塞,直到信号量值再次变为1(即其他线程调用unlock
方法,使信号量值加1)。这样就确保了同一时间只有一个线程能够访问共享资源,从而实现线程安全。