程序中线程的可并行性判断
熊熊爱吃饼 2012-08-04 05:12:27 本人在学习多线程编程,想问一下如何判断一个程序中的线程是否是可并行的?如下是我写的一个简易的加法程序:请诸位多多指教。谢谢了。
#include <windows.h>
#include<time.h>
#include <iostream>
using namespace std;
int a[1003];
DWORD WINAPI MyThread1(PVOID pvParam)
{
int i,j=0;
srand(time(0));
for(;j<1000;j++)
{
int t=rand()%10;
a[j]=t;
cout<<a[j]<<" ";
}
//生成1-10之间的随机数
return 0;
}
DWORD WINAPI SumThread1(PVOID pvParam)
{
int sum=0;
for(int i=0;i<350;i++)
{
sum+=a[i];
}
a[1001]=sum;
return 0;
}
DWORD WINAPI SumThread2(PVOID pvParam)
{
int sum=0;
for(int i=350;i<700;i++)
{
sum+=a[i];
}
a[1002]=sum;
Sleep(1000);
return 0;
}
DWORD WINAPI SumThread3(PVOID pvParam)
{
int sum=0;
for(int i=700;i<1000;i++)
{
sum+=a[i];
}
a[1003]=sum;
Sleep(1000);
return 0;
}
int main()
{
cout<<"随机数序列为:"<<endl;
HANDLE hThread1 = CreateThread(NULL, 0, MyThread1, NULL, 0, NULL);
Sleep(1500);
HANDLE hThread2 = CreateThread(NULL, 0, SumThread1, NULL, 0, NULL);
HANDLE hThread3 = CreateThread(NULL, 0, SumThread2, NULL, 0, NULL);
HANDLE hThread4 = CreateThread(NULL, 0, SumThread3, NULL, 0, NULL);
Sleep(1000);
int sum;
sum=a[1001]+a[1002]+a[1003];
cout<<"Then,The total sum will gona be:"<<sum<<endl;
CloseHandle(hThread1);
CloseHandle(hThread2);
CloseHandle(hThread3);
return 0;
}