我对可重入锁和互斥感到困惑,如果一个线程可以多次重新获取锁,那不是紫互斥吗,因为其他线程也想获取锁?
我知道可重入锁用于递归函数,这样在递归时就不会陷入死锁,但是它如何保证互斥呢?
您问题的答案取决于操作系统的性质。 在中断驱动的操作系统(即支持软件中断)中,允许同一线程获取可重入锁并不能保证互斥。如果线程以独占顺序执行,那么它确实具有互斥性。
前一种情况:
主线程代码锁资源 主线程代码开始操作资源。 线程中断执行 线程中断锁定资源。 线程中断操作资源 线程中断解锁资源 主线程代码完成对资源的操作 主线程代码解锁资源
资源处于不确定状态。