我知道内核允许持有互斥量的进程进入睡眠状态(尽管这不是一个好习惯)。我的问题是这是否必然意味着进程将获得pre-empted?
LKD说,每次我获取锁时,process->thread_info->preempt_count
都会增加,并且schedule()在调用调度程序之前会检查preempt_count
。
那么睡眠线程将不会被抢占并继续占用系统吗?
答案 0 :(得分:0)
是的,互斥体持有人完全可以睡觉。
LKD说,每当我获得锁时,
process->thread_info->preempt_count
都会增加...
这是关于自旋锁,而不是互斥锁。 自旋锁持有人实际上是禁止睡觉的。