空运转的后台程序为什么耗掉了25%的CPU?
刚写了一个后台程序,为什么比窗体程序耗的资源多那么多?调用的都是同样的功能,即使后台程序就一个空的while就耗掉了25%的CPU 正常吗?
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
while(true)
{
}
return 0;
}
[解决办法]
这是busy loop,不是空转哦。
[解决办法]
才25%?
[解决办法]
你得睡眠,而不是while(true) xxxx。
比如linux kernel中的 schedule msleep
[解决办法]
循环内加上Sleep(15);
[解决办法]
你得让程序干点事,这样死循环还不如不运行
[解决办法]
死循环占用整个线程
哪怕你什么代码都没写,死循环就是死循环
[解决办法]
int WINAPI WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
thread1->start();
thread2->start();
while(ThreadNotStop)
{
Sleep(15);
}
return 0;
}
[解决办法]
while(ture)
线程会获取CPU时间片,除非它被其他线程抢占,但是抢占后又会获得CPU时间片,这样会浪费宝贵的CPU时间~
[解决办法]