面试题答案
一键面试- 互斥锁(Mutex):
- 适用场景:当需要保证同一时间只有一个线程能够访问某段共享资源时使用。例如在多个线程可能同时访问和修改同一个文件的场景下,使用互斥锁可以避免数据混乱。
- 信号量(Semaphore):
- 适用场景:适用于控制对有限资源的访问。比如一个服务器同时只能处理10个连接,使用信号量可以限制并发连接数为10,当有新连接请求时,获取信号量,连接结束时释放信号量。
- 自旋锁(Spin Lock):
- 适用场景:适用于锁的持有时间非常短,且线程上下文切换开销较大的场景。例如在多核CPU环境下,某个线程需要短暂获取锁来执行一小段临界区代码,自旋锁可以避免线程切换带来的开销。
- 读写锁(Read-Write Lock):
- 适用场景:适用于读操作远多于写操作的场景。允许多个线程同时进行读操作,而写操作时需要独占锁。例如在数据库查询频繁,但写入操作较少的场景下,读写锁能提高系统性能。