Linux内核线程在保持自旋锁的情况下退出会发生什么?
我在函数中看到:static inline void schedule_debug(struct task_struct * prev) 在__schedule中,有一个检查:
if(不太可能(in_atomic_preempt_off()&& prev-> state!= TASK_DEAD) __schedule_bug(PREV);
避免检查退出线程的抢占禁用。
那么,内核是否明确确保锁被释放,或者它只是让内核进入死锁状态,如果线程没有处理它?</ p>
另外,其他锁如互斥锁和信号量呢?