内核线程同步问题,导致系统挂起(死机?)

发布于 2022-10-15 10:14:16 字数 472 浏览 49 评论 0

在内核编程中遇到这样的问题:
两个线程的大体上的功能:查找队列上符合条件的项,然后对这些项进行处理,最后删除这些项。这就要求在线程开始的时候要获得队列的控制权,并且具有排他性(因为两个线程的查找条件不一样)。于是我试了几种内核同步方法,结果导致系统挂起(或者死机)
1、spin_lock和spin_unlock,从网上得知这种方式要求控制时间很短,否则很容易导致系统挂起(但因为我们对项的处理需要花费一些时间),于是我转向信号量方式
2、信号量方式:mutex_lock和mutex_unlock,以及down和up, 调用规则如下
fun1{down; .........   up;}   fun2{down; .......   up;} mutex_lock和mutex_unlock的调用方式相同
但这样依然还是会导致系统挂起(死机),想问一下这里到底是什么原因导致这种情况?还有没有其他方式实现这样的内核同步?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

琉璃繁缕 2022-10-22 10:14:16

oops贴出来

慵挽 2022-10-22 10:14:16

系统死机了。。。。。怎么贴oops。。。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文