567
社区成员




//4个线程各执行50次
for(int i=0;i<50;i++)
{
thread1Flag = (HANDLE)_beginthread(threadFun1, 0, 0);
thread2Flag = (HANDLE)_beginthread(threadFun2, 0, 0);
thread3Flag = (HANDLE)_beginthread(threadFun3, 0, 0);
thread4Flag = (HANDLE)_beginthread(threadFun4, 0, 0);
WaitForSingleObject(thread1Flag,INFINITE);
WaitForSingleObject(thread2Flag,INFINITE);
WaitForSingleObject(thread3Flag,INFINITE);
WaitForSingleObject(thread4Flag,INFINITE);
sum += sum1+sum2+sum3+sum4;
}
cout<<"multithreading sum = "<<sum<<endl;
void threadFun1(void *p)
{
sum1=0;
float *bufPointer1 = &buf1[startLen1];
float *bufPointer2 = &buf2[startLen1];
float *bufPointer3 = &buf3[startLen1];
for(int i=0; i<totalLen1; i++)
{
*bufPointer3 = (*bufPointer1)*(*bufPointer2);
sum1 += *bufPointer3;
*bufPointer1++;
*bufPointer2++;
*bufPointer3++;
}
}
void threadFun2(void *p)
{
sum2 = 0;
float *bufPointer1 = &buf1[startLen2];
float *bufPointer2 = &buf2[startLen2];
float *bufPointer3 = &buf3[startLen2];
for(int i=0; i<totalLen2; i++)
{
*bufPointer3 = (*bufPointer1)*(*bufPointer2);
sum2 += *bufPointer3;
*bufPointer1++;
*bufPointer2++;
*bufPointer3++;
}
}
void threadFun3(void *p)
{
sum3 = 0;
float *bufPointer1 = &buf1[startLen3];
float *bufPointer2 = &buf2[startLen3];
float *bufPointer3 = &buf3[startLen3];
for(int i=0; i<totalLen3; i++)
{
*bufPointer3 = (*bufPointer1)*(*bufPointer2);
sum3 += *bufPointer3;
*bufPointer1++;
*bufPointer2++;
*bufPointer3++;
}
}
void threadFun4(void *p)
{
sum4 = 0;
float *bufPointer1 = &buf1[startLen4];
float *bufPointer2 = &buf2[startLen4];
float *bufPointer3 = &buf3[startLen4];
for(int i=0; i<totalLen4; i++)
{
*bufPointer3 = (*bufPointer1)*(*bufPointer2);
sum4 += *bufPointer3;
*bufPointer1++;
*bufPointer2++;
*bufPointer3++;
}
}