#include
<boost/thread/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <Windows.h>//for sleep
void
ExecuteThread()
{
for(;;) {
boost::xtime time;
time.nsec = 0;
time.sec = 1;
boost::thread::sleep(time);
//Sleep(1000);
}
}
int
main()
{
boost::thread thread1(ExecuteThread);
boost::thread thread2(ExecuteThread);
thread1.join();
thread2.join();
return 0;
}
 
When this program is run with Sleep() instead of boost::thread::sleep(), and there are no other cpu intensive programs running, Task Manager shows 99% of the cpu (dual core) is idle.  However, when it is run with boost::thread::sleep(), 99% of the cpu is being used by the program!  This is a problem because powersaving features no longer work.
 
When this program with boost::thread::sleep() is run with another program that is cpu intensive, Task Manager reports the other program uses 99% of the cpu, so there is no problem there.
 
I am using an overclocked Intel Core 2 Duo 6400 if that matters.