可重入锁如何保证互斥?

问题描述 投票:0回答:1

我对可重入锁和互斥感到困惑,如果一个线程可以多次重新获取锁,那不是紫互斥吗,因为其他线程也想获取锁?

我知道可重入锁用于递归函数,这样在递归时就不会陷入死锁,但是它如何保证互斥呢?

operating-system locks reentrantlock
1个回答
0
投票

您问题的答案取决于操作系统的性质。 在中断驱动的操作系统(即支持软件中断)中,允许同一线程获取可重入锁并不能保证互斥。如果线程以独占顺序执行,那么它确实具有互斥性。

前一种情况:

主线程代码锁资源 主线程代码开始操作资源。 线程中断执行 线程中断锁定资源。 线程中断操作资源 线程中断解锁资源 主线程代码完成对资源的操作 主线程代码解锁资源

资源处于不确定状态。

© www.soinside.com 2019 - 2024. All rights reserved.