<分区>
我是 C++ 菜鸟;我有个问题。我正在使用:
while(true) {
doSomething();
Sleep(time);
}
...在一个线程中,由于 sleep 本身,我的程序占用了很高的 CPU(经过检查,这一定是问题所在)。有什么办法可以用别的吗?
<分区>
我是 C++ 菜鸟;我有个问题。我正在使用:
while(true) {
doSomething();
Sleep(time);
}
...在一个线程中,由于 sleep 本身,我的程序占用了很高的 CPU(经过检查,这一定是问题所在)。有什么办法可以用别的吗?
最佳答案
“Sleep()”不消耗 CPU - 除了调用开销。
一个可能的原因是您有其他线程在旋转。如果您使用 OpenMP 或 Intel 的线程构建 block 之类的东西,就会发生这种情况;在休眠期间,这些系统使用的工作线程会不断轮询要执行的工作,从而导致 CPU 使用率过高。
或者您有一个自己的工作线程,它正在旋转 CPU 等待工作被交付。
关于c++ sleep 占用过多的CPU使用率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18927711/
相关文章:
c++ - 释放 std::list<cv::Mat> c++ 的内存
c++ - std::vector 的复制构造函数如何操作?
c - 在 C 中创建动态数组(指针)/调整其大小时出现问题
c - 错误: ‘node’ undeclared (first use in this function)
c - 尝试从设备读取时,Raspberry Pi 上出现 FT_DEVICE_NOT_FOUND - sudo 不起作用
c++ - 关于 RAII : How to prevent errors caused by accidentally creating a temporary?