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

需求定制 需求定制 主题:1050 回复:2283

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

晚风撩人 发布于 2016-10-30 字数 705 浏览 1012 回复 1

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

发布评论

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

支持 Markdown 语法,需要帮助?

评论(1

瑾兮 2017-07-12 1 楼

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