内核线程,信号量通信,延迟达到300ms
本帖最后由 linux1020 于 2011-04-14 12:48 编辑
程序模型如下:
进程P;
内核线程T1;
信号量 struct semaphore mysem1,struct semaphore mysem2;
进程P在内核态与内核线程T1, 通过信号量mysem1,mysem2通信,这两个任务,只是简单的up 和 down这个信号量,没有其他耗时的操作。
P:
up(&mysem1); down(&mysem2);
T1:
down(&mysem1); up(&mysem2);
在P中up前和down后计时测试,发现延迟达到300+ms,不知道是什么问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
回复 1# linux1020
各位有没有什么方法,可以定位一下问题?
现有的现象是 内核线程 T1 up mysem2之后,就阻塞在down mysem1上了, 大概300ms之后,进程P才执行完成 down mysem2,系统基本上没有什么负荷,不知道是为什么调度的延迟为什么这么大?
我创建内核线程的表达式如下:
kernel_thread(function, NULL, CLONE_FS| CLONE_FILES);
不知道是不是参数不正确?