Linux-linux下等待队列和等待队列头里面分别装的是什么内容?

发布于 2016-10-30 13:06:07 字数 408 浏览 1157 评论 1

最近在看Linux的内核模块,然后看到里面有等待队列这个机制。
可是不断看了一些资料,都只是在告诉我怎么去用。
而用的过程中一直有疑惑,到底一个等待队列里面装的是不是,在一类的设备模块中,等待同一个资源的所有进程?那么等待队列头的作用是什么?
为什么不能简化成就一个等待队列头,下面就是所有等待资源的所有进程?
我看到
void wake_up(wait_queue_head_t *queue)
这个函数,调用它的话,可以唤醒以queue作为等待队列头的所有等待队列中所有属于该等待队列头的等待队列对应的进程(这句话有点繁琐。。不过是书上的原话)。那么就让我觉得更奇怪,为什么还得在等待队列头下加多一层等待队列,一旦wake up却不能单独wake up一个等待队列,而是同一个等待队列头下的所有队列?
希望有人能解答一下,谢谢。

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

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

发布评论

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

评论(1

瑾兮 2017-07-12 18:18:52

问完,跟某大神讨论一下,原来这是一个傻问题,Linux下的wait_queue_t这个数据结构是指向一个进程的,而等待队列头是指向所有这些等待同一个资源的进程的双向链表的头。大神后来说了一句,它名字起得不好,容易让人误会。

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