假设Linux驱动程序代码获取了一个自旋锁,在关键部分内部,函数调用会强制在驱动程序之上运行的进程进入休眠状态。知道要保持自旋锁在相关处理器上禁用抢占,是否可以唤醒进程,从而允许驱动程序代码释放自旋锁?
答案 0 :(得分:1)
不,拿着螺旋锁时不允许睡觉。执行此操作的代码是错误的。
可以唤醒进程的唯一方法是,如果在另一个核心上运行的代码做了某些事情来唤醒它(这意味着是的,如果只有一个核心,它肯定会死锁)。
答案 1 :(得分:0)
虽然spinlock其他进程无法做任何事情来唤醒它,你可以尝试使用信号量进行这种类型的切换