睡觉时在linux内核中持有一个互斥体

时间:2013-06-09 07:02:14

标签: c linux-kernel mutex sleep

如果进程在持有互斥锁的情况下休眠会怎样?例如,如果我有以下代码:

mutex_lock(mtx);
wait_event_unterruptible_timeout(wait_queue_head, condition, timeout);
//some other code
mutex_unlock(mtx);

睡眠时释放互斥锁并在进程唤醒之前重新获取?或者该过程是否在睡觉时持有互斥锁?

谢谢

2 个答案:

答案 0 :(得分:6)

保持互斥锁。

它说明它在锡上做了什么。

答案 1 :(得分:4)

睡觉时不会释放互斥锁。

在Linux内核中,您可以在持有互斥锁或rw_semaphore时进入睡眠状态。另一方面,你拿着自旋锁或rwlocks时无法入睡