内核线程同步问题,导致系统挂起(死机?)
在内核编程中遇到这样的问题:
两个线程的大体上的功能:查找队列上符合条件的项,然后对这些项进行处理,最后删除这些项。这就要求在线程开始的时候要获得队列的控制权,并且具有排他性(因为两个线程的查找条件不一样)。于是我试了几种内核同步方法,结果导致系统挂起(或者死机)
1、spin_lock和spin_unlock,从网上得知这种方式要求控制时间很短,否则很容易导致系统挂起(但因为我们对项的处理需要花费一些时间),于是我转向信号量方式
2、信号量方式:mutex_lock和mutex_unlock,以及down和up, 调用规则如下
fun1{down; ......... up;} fun2{down; ....... up;} mutex_lock和mutex_unlock的调用方式相同
但这样依然还是会导致系统挂起(死机),想问一下这里到底是什么原因导致这种情况?还有没有其他方式实现这样的内核同步?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
oops贴出来
系统死机了。。。。。怎么贴oops。。。