Linux设备驱动中自旋锁的一个问题

yuan_xin_ 2019-03-23 04:50:33
书上说,如果某个获得锁的函数A要调用其他同样试图获取这个锁的函数B,代码就会死锁。 是因为函数B想获得这个锁,但是没有获得,而进入自旋,函数A却调用了函数B,由于函数B处于自旋状态,返回不了函数A导致这个锁一直得不到释放,才会死锁的吗? 望各路大神解答!!!
...全文
817 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一块冬瓜 2019-04-30
  • 打赏
  • 举报
回复
是的,自旋锁的获取过程可以简单的理解成while(!flag), 因为函数A获取了锁,相当于flag为0了,函数B获取锁就相当于是while(1),卡住程序运行,函数A一直无法释放锁,此时程序进入一个死锁状态。
jiamianshiye 2019-04-01
  • 打赏
  • 举报
回复
是的,这种情况一般都是进行了递归调用获取自旋锁的操作。
哈哈哈哈2018 2019-03-27
  • 打赏
  • 举报
回复
是的,由于A获取了锁,但是在调用B时一直处于自旋状态,导致A获取的锁无法释放,此时便处于死锁状态

1,318

社区成员

发帖
与我相关
我的任务
社区描述
主要是开发驱动技术
社区管理员
  • 驱动程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧