linux – POSIX消息队列 – mq_send线程唤醒命令
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – POSIX消息队列 – mq_send线程唤醒命令,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1443字,纯文字阅读大概需要3分钟。
内容图文
![linux – POSIX消息队列 – mq_send线程唤醒命令](/upload/InfoBanner/zyjiaocheng/964/b9002d88ad6a4c20b4e3de8cc93911bf.jpg)
有人可以向我解释消息队列如何处理唤醒多个
线程在单个消息队列中被阻止?
我的情况是我有多个作者阻止完整的消息
队列,每个发布优先级等于线程的消息
优先.我想确保他们按优先顺序叫醒和发布,
但是我的应用程序表现得像是按FIFO顺序唤醒
(即他们阻止的顺序).每个阻塞线程都是
使用具有不同优先级的SCHED_FIFO策略进行调度
系统级范围.
我搜索了互联网的高低,以寻找描述如何的东西
这应该工作,我所能找到的是描述它的POSIX手册页
如果优先级调度是多个阻塞,则按优先级顺序唤醒
支持的.由于内核调度程序是优先级调度程序
会认为线程会按优先级顺序唤醒并发布到
队列,但似乎并非如此.我敢肯定我
只是遗漏了一些微妙的细节,并希望专家在这里
这份清单可以帮助我了解我所看到的内容
这些线程准备好运行的内核级别.
我有一个小测试应用程序,如果有必要我可以在这里发布.它只是填充队列,然后有几个线程都尝试并写入它,所有线程优先级不同,并且发布的消息优先级等于线程优先级.然后我从队列中删除一条消息,并期望最高优先级的线程唤醒并发布其消息.但是,要等待的第一个线程首先发布其消息.
任何帮助或文档,任何人可以指出我,以便深入了解这个?
提前致谢!
解决方法:
事实证明,如果队列已满,Linux内核会查看任务的优先级值,并以任务友好顺序将其添加到等待队列(这是非RT任务的优先级顺序).等待队列不符合我的应用程序使用的实时优先级.非RT优先级(漂亮的值)正在正确处理并以良好的顺序唤醒.
在将任务添加到内部内核等待队列时,我的问题的根本原因在于内核如何处理优先级.我向linux-kernel列表提交了一个补丁,该补丁已被接受,并将被用于未来的版本,这些版本在将任务添加到等待队列时更改了优先级检查 – 它现在既支持非RT优先级又支持RT优先级.它不处理截止日期计划任务的优先级.
内容总结
以上是互联网集市为您收集整理的linux – POSIX消息队列 – mq_send线程唤醒命令全部内容,希望文章能够帮你解决linux – POSIX消息队列 – mq_send线程唤醒命令所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。