问一个spinlock的问题
SPINLOCK是自旋锁,但是如果只有一个CPU的话, 假如锁之前给锁住了,那是不是程序就会一直死在这里,动不了? 别的程序也都运行不了???释放锁的程序也运行不了, 那系统不就崩溃了么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
SPINLOCK是自旋锁,但是如果只有一个CPU的话, 假如锁之前给锁住了,那是不是程序就会一直死在这里,动不了? 别的程序也都运行不了???释放锁的程序也运行不了, 那系统不就崩溃了么?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(7)
对于只有一个CPU,如果编译时去掉SMP的配置,实际上spinlock是空操作。而就算编译进来了,除非程序有错误,否则不应该出现这种情况,因为按要求得到spinlock之后会导致任务切换的操作是不能做的。
锁之前给锁住了,但总要释放,不释放就是个死
嵌入式基本都是单核, 假如 是空函数的话, 那这个锁就是无效的啊? 那 SPINLOCK 就没有用了?
[ 本帖最后由 star316 于 2009-3-2 15:36 编辑 ]
前面有个帖子讨论过这个问题。
如果是单核,且在2.6内核中,spin lock只是禁止内核抢占的开关而已。
恩。单核下基本上就是空转
但cpu是不需要自旋锁的,只要关闭中断就行了。
这句话是什么意思?