互斥锁发现被锁时会怎么样?
来源:7-2 线程同步之互斥量

虽迟但到
2019-10-10
老师您好!
看了后面一节说如果线程发现自旋锁被锁了,会进入忙等待的状态,那么如果是互斥锁会怎么样?
百度了一下说会进入睡眠状态,然后我就分不清了,睡眠是种什么状态,它和前面的说的阻塞有什么区别?还有一个概念是挂起,这又是什么状态?
写回答
1回答
-
这些都是因为平时称呼的时候不太严格导致的,意思其实都类似,可以回顾一下进程的状态这一节课的内容。
互斥锁会让出CPU,然后进入睡眠状态,等到锁释放了,再唤醒它。
阻塞也是类似的,阻塞可以理解为是需要的资源还没有获取到,锁也算是一种资源,当获取不到锁的时候,也会进入睡眠状态。
这里面需要注意的是,阻塞是从人理解的角度去看的,举个例子,当你看到水流不通时,认为管道有阻塞;进程也是类似的。
睡眠状态才是进程基本状态里面的一种,而挂起则可以是理解为一种操作。完整的过程可以这样理解:
当进程阻塞了,操作系统会把进程挂起,进程进入睡眠状态。
112019-10-11
相似问题