15,474
社区成员




void TreadFuc1(PVOID param)
{
_int64 sum=0;
_int64 counter_begin,counter_end;
QueryPerformanceCounter((LARGE_INTEGER*)&counter_begin);
for(int i=0;i<100000000;i++)
{
sum+=i;
}
SetEvent(evet1);
}
void TreadFuc2(PVOID param)
{
_int64 sum=0;
_int64 counter_begin,counter_end;
QueryPerformanceCounter((LARGE_INTEGER*)&counter_begin);
for(int i=0;i<100000000;i++)
{
sum+=i;
}
SetEvent(evet2);
}
int main(int argc, char* argv[])
{
DWORD dwSet=1;
int p=SetProcessAffinityMask(GetCurrentProcess(),dwSet); //设置CPU的亲和力将dwSet的值分别设置为1,2,3看双核CPU的每个核的使用率
_int64 sum=0;
_int64 counter_begin,counter_end,large;
evet1=CreateEvent(NULL,FALSE,FALSE,NULL);
evet2=CreateEvent(NULL,FALSE,FALSE,NULL);
evet11=CreateEvent(NULL,FALSE,FALSE,NULL);
evet22=CreateEvent(NULL,FALSE,FALSE,NULL);
DWORD dwP1=0,dwS1=0,dwP2=0,dwS2=0;
QueryPerformanceFrequency((LARGE_INTEGER*)&large);
QueryPerformanceCounter((LARGE_INTEGER*)&counter_begin); //多线程并行执行部分
_beginthread(TreadFuc1,0,NULL);
_beginthread(TreadFuc2,0,NULL);
WaitForSingleObject(evet1,INFINITE);
WaitForSingleObject(evet2,INFINITE);
QueryPerformanceCounter((LARGE_INTEGER*)&counter_end);
double time=(double)(counter_end-counter_begin)/large;
printf("main Time is %I64d,%lf\n",counter_end-counter_begin,time);
int sign1=GetProcessAffinityMask(GetCurrentProcess(),(LPDWORD)&dwP1,(LPDWORD)&dwS1);
sign1=GetProcessAffinityMask(GetCurrentProcess(),(LPDWORD)&dwP2,(LPDWORD)&dwS2);
QueryPerformanceCounter((LARGE_INTEGER*)&counter_begin); //顺序执行部分
TreadFuc1(NULL);
TreadFuc2(NULL);
QueryPerformanceCounter((LARGE_INTEGER*)&counter_end);
time=(double)(counter_end-counter_begin)/large;
printf("main Time is %I64d,%lf\n",counter_end-counter_begin,time);
printf("main thread exit.\n");
return 0;
}