面试题答案
一键面试- 互斥锁原理:
- 互斥锁(Mutex,即Mutual Exclusion的缩写)是一种特殊的二元信号量,它只有两种状态:锁定(locked)和解锁(unlocked)。
- 当一个线程想要访问共享资源时,它首先需要获取互斥锁。如果互斥锁处于解锁状态,该线程可以获取它并将其设置为锁定状态,然后安全地访问共享资源。当线程完成对共享资源的访问后,它必须释放互斥锁,将其状态设置为解锁,以便其他线程可以获取它来访问共享资源。这样可以保证在同一时间只有一个线程能够访问共享资源,从而避免数据竞争和不一致问题。
- 伪代码实现:
// 定义互斥锁
mutex sharedMutex
// 共享资源
sharedResource
// 线程函数
threadFunction() {
// 获取互斥锁
acquire(sharedMutex)
// 访问共享资源
access(sharedResource)
// 释放互斥锁
release(sharedMutex)
}
在上述伪代码中,acquire
函数用于获取互斥锁,如果互斥锁已经被其他线程锁定,调用 acquire
的线程将被阻塞,直到互斥锁被释放。release
函数用于释放互斥锁,使其他线程有机会获取它。通过这种方式,多个线程对 sharedResource
的访问就可以得到有效的保护。