自旋锁不能睡眠:
A获得锁睡眠,B在等锁怎么办,可能会等很久哦,B就一直自旋等着,光等着不干活。获得锁,本来就是要操作一些共享资源,所以赶快的,别墨迹,还睡个球。
禁止中断不能睡眠:
禁止中断就是希望不被打扰,赶紧干完自己该做的事,还睡觉,我靠,还想不想干了。当硬件中断来的时候,这种情况不能睡眠,想想也对,你来强行打断人家,还想带着人家去睡,怎么可以,中断上下文不应该睡眠,只有进程上下文可以睡,技术当然可以实现,但没有意义。
spinlock的初衷是关调度,别人别和我抢这个临界区,同时也不让其他核抢。
关中断时不能睡眠,因为睡眠依赖调度器,调度器通过时钟中断判断何时唤醒任务。