int main()
{
//::SetProcessAffinityMask(GetCurrentProcess(),0x00000001);
HANDLE hThread[2];
SYSTEM_INFO SI;
ZeroMemory(&SI, sizeof(SI));
GetSystemInfo(&SI);
DWORD nCPU = SI.dwNumberOfProcessors;
for (int i = 0; i <= nCPU - 1; i++)
{
hThread[i] = NULL;
hThread[i] = CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE )sin_thy, NULL, CREATE_SUSPENDED, NULL);
SetThreadAffinityMask(hThread[i],0x01<<i); //USE MASK
ResumeThread(hThread[i]);
}
WaitForMultipleObjects(nCPU, hThread, true, INFINITE);
}
void sin_thy(){
double busy_span[COUNT]; /* need to modify */
double idle_span[COUNT];
int half = INTERVAL/2;
double radian = 0.0;
double start_time;
int i;
for(i=0; i<COUNT; i++)
{
busy_span[i] = (double)(half + half*sin(PI*radian));
idle_span[i] = (double)(INTERVAL - busy_span[i]);
radian += SPLIT;
}
i = 0;
while(1)
{
i %= COUNT;
start_time = ::GetTickCount();//get_time();
while((::GetTickCount()-start_time) <= busy_span[i])
;
Sleep(idle_span[i]);
i++;
}
}
多核情况下的哈,需要用到一些windows的API
记得我第一次编程,就把cpu跑100%了
转眼,十年了,从最早的PASCAL到C++,从算山峰高度到现在的图像三维重建,额