内核线程,信号量通信,延迟达到300ms

发布于 2022-10-15 10:07:57 字数 435 浏览 17 评论 0

本帖最后由 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 技术交流群。

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

发布评论

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

评论(1

我纯我任性 2022-10-22 10:07:57

回复 1# linux1020

    各位有没有什么方法,可以定位一下问题?

   
   现有的现象是 内核线程 T1  up  mysem2之后,就阻塞在down mysem1上了, 大概300ms之后,进程P才执行完成 down mysem2,系统基本上没有什么负荷,不知道是为什么调度的延迟为什么这么大?
   
   我创建内核线程的表达式如下:
   kernel_thread(function, NULL, CLONE_FS| CLONE_FILES);
    不知道是不是参数不正确?

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