linux spin lock 几点注意

独自空忆成欢 提交于 2020-01-04 00:06:33
  1. 被自旋锁保护的临界区代码执行时不能睡眠。单核处理器下,获取到锁的线程睡眠,若恰好此时CPU调度的另一个执行线程也需要获取这个锁,则会造成死锁;多核处理器下,若想获取锁的线程在同一个处理器下,同样会造成死锁,若位于另外的处理器,则会长时间占用CPU等待睡眠的线程释放锁,从而浪费CPU资源。
  2. 若中断服务程序也要获得锁,则被自旋锁保护的临界区代码执行时不能被其他中断打断。原因同上类似。
  3. 被自旋锁保护的临界区代码在执行时,内核不能被抢占,亦同上类似。由自旋锁代码本身处理
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!