关于“工作队列”的睡眠和嵌套的两个问题。多谢!
时间:2010-12-28
来源:互联网
1,我们知道:每个工作队列(struct workqueue_struct)都有一个每cpu变量(struct cpu_workueue_struct),在这个每cpu变量里有一个“待处理工作队列节点的双向链表(worklist)”,然后“队列处理线程”就按照这个双向链表 来一个一个处理每一个节点的任务。那么当其中一个队列节点的任务执行了一个导致睡眠的系统函数,那么“队列处理线程”将睡眠,这样岂不就导致该节点后面的所有节点上的任务都被阻塞了吗??? 如果有几个节点执行了导致睡眠的函数,那么后面的节点上的任务岂不是要很久以后才能被执行???
2,一个关于工作队列线程的嵌套的问题:
书上说:“在对称多处理器系统中,如果创建工作队列时使用了选项singlethread,那么系统为该工作队列只创建了一个工作队列处理线程。系统中任一处理器上激活的工作队列节点都将唤醒唯一的工作队列处理线程,而该工作队列处理线程可能由于工作队列节点的处理函数调用了导致睡眠的系统函数已经从处于睡眠状态,此时会造成工作队列线程的嵌套”。
我的问题是:假设一个“工作队列节点”执行一个引起睡眠的函数,从而导致工作队列处理线程进入了睡眠状态。之后当工作队列处理线程被唤醒的时候,也应该是从“刚才睡眠的那个地方”接着执行啊,怎么会引起工作队列线程的嵌套呢???
以上多谢!
2,一个关于工作队列线程的嵌套的问题:
书上说:“在对称多处理器系统中,如果创建工作队列时使用了选项singlethread,那么系统为该工作队列只创建了一个工作队列处理线程。系统中任一处理器上激活的工作队列节点都将唤醒唯一的工作队列处理线程,而该工作队列处理线程可能由于工作队列节点的处理函数调用了导致睡眠的系统函数已经从处于睡眠状态,此时会造成工作队列线程的嵌套”。
我的问题是:假设一个“工作队列节点”执行一个引起睡眠的函数,从而导致工作队列处理线程进入了睡眠状态。之后当工作队列处理线程被唤醒的时候,也应该是从“刚才睡眠的那个地方”接着执行啊,怎么会引起工作队列线程的嵌套呢???
以上多谢!
作者: 巨人史玉柱 发布时间: 2010-12-28
看了一下代码,和楼主同问。。。。
不知楼主所指的“书上说”是哪本书?
不知楼主所指的“书上说”是哪本书?
作者: bigrat023 发布时间: 2010-12-28
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28