您的位置:首页 > 编程语言

如何让多核cpu跑出sin曲线,来自编程之美

2012-12-29 20:59 190 查看
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++,从算山峰高度到现在的图像三维重建,额
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐