gpt4 book ai didi

c - 为什么在 ubuntu 2.6.38-generic 或 3.0.0-lowlatency 内核上的一个线程会阻止另一个线程使用 mmap_sem?

转载 作者:太空狗 更新时间:2023-10-29 12:37:26 25 4
gpt4 key购买 nike

如果我编写一个线程并在 Round Robyn 实时调度程序上运行它,在 Ubuntu 11.04 中使用随附的 2.6.38 通用内核或来自此 ppa 的可用 3.0.0-9-lowlatency 内核:https://launchpad.net/~abogani/+archive/ppa ,它似乎锁定了命令:获取 key

当 gpg 在后台尝试使用 mlock() 时,它似乎锁定了该命令,据我所知,它需要 mmap_sem。但是,我的测试线程实际上是“什么都不做”,因为它只是一个空的 for 循环。例如,我也没有主动使用 mmap_sem。

在 SMP 机器(4 核,8 逻辑核)上,RR 调度程序上优先级为 50 或更高的单个线程似乎总是锁定 apt-key。较低优先级的返回率大约为 50% 或更少,有时需要几分钟才能返回。

我的这个实时优先级的空循环线程和 mmap_sem 之间有什么联系?

最佳答案

来自本网站:http://www.icir.org/gregor/tools/pthread-scheduling.html

该线程将与所有其他线程和进程争夺 CPU。因此,如果您的线程具有更高的优先级并且处于实时调度状态,它将占用 CPU 并且永远不会归还。

测试这是否是问题所在的一种方法是阻塞任何系统调用,这样您的线程就会休眠并让其他进程运行。使用带超时的选择应该是一个很好的测试。

关于c - 为什么在 ubuntu 2.6.38-generic 或 3.0.0-lowlatency 内核上的一个线程会阻止另一个线程使用 mmap_sem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com