MST

星途 面试题库

面试题:Objective-C中多线程资源共享场景下,NSLock的常见使用方式及原理

在Objective-C多线程编程中,当多个线程需要访问共享资源时,NSLock是常用的锁机制之一。请描述NSLock的常见使用方式,例如如何创建、锁定和解锁,并且简要说明其实现线程安全的原理。
41.3万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试

NSLock常见使用方式

  1. 创建NSLock对象
NSLock *lock = [[NSLock alloc] init];
  1. 锁定资源
[lock lock];
// 这里放置需要线程安全访问的共享资源代码
  1. 解锁资源
[lock unlock];

实现线程安全的原理

NSLock基于信号量(Semaphore)机制实现。当一个线程调用lock方法时,信号量值减1。如果信号量值变为0,意味着资源已被占用,当前线程会被阻塞,直到信号量值再次变为1(即其他线程调用unlock方法,使信号量值加1)。这样就确保了同一时间只有一个线程能够访问共享资源,从而实现线程安全。