最初的问题来自编程之美的第1.1章
我的第一次尝试没有考虑多核和多线程,所以它不起作用,但它提供了这样的想法:如果我们希望处理器加载一半,我们可以创建一个无限循环,它占用一半的时间,并占用处理器另一半.
我将跳过第一次尝试的细节.
在我的第二次努力中,情况进展顺利,但仍有一些困扰我的问题.
以下片段是第一个可能的解决方案.它使用GetTickCount()Windows API,并使用两个线程将处理器加载到50%.
该解决方案一个要点.
#include <boost/thread.hpp>
#include "windows.h"
#define INTERVAL 10
void infiniteLoop() {
while (1) {
DWORD startTime = GetTickCount();
while (GetTickCount() - startTime <= INTERVAL)
;
boost::posix_time::millisec sleepTime(INTERVAL);
boost::this_thread::sleep(sleepTime);
}
}
int main() {
boost::thread thread1(infiniteLoop);
boost::thread …Run Code Online (Sandbox Code Playgroud)