#include <windows.h> #include <stdlib.h> #include <iostream> #include <math.h> using namespace std; const int n = 100, cnt = 200; const double pi = acos(-1.0); DWORD busy[cnt+1], idle[cnt+1]; int main() { for(int i=0; i<cnt; ++i) { busy[i] = (DWORD) ( (sin(i*2.0L*pi/cnt) + 1.0L) *0.5L * n ); idle[i] = n - busy[i]; } ::SetProcessAffinityMask(::GetCurrentProcess(), 0x00000001); int j=0; DWORD start; while(true) { ++j; if(j==cnt)j=0; start = ::GetTickCount(); while(::GetTickCount() - start <= busy[j]) ; ::Sleep(idle[j]); } system("pause"); return 0; }