Selasa, 12 Maret 2013

_beginthreadex Example


#define WIN32_LEAN_AND_MEAN
#include
#include
#include
#include

#define NumData 15000

struct paramo{
paramo(int *in,int awal,int akhir,int id):data(in),start(awal),end(akhir),ID(id){}
int *data,start,end,ID;
};

using namespace std;

int *counter;

void ThreadFunc(void* param)
{
    paramo *flu=(paramo*)param;
//if(flu->ID==1)cout<start<<" "<end< for(int i=flu->start;iend;i++){
flu->data[i]+=1;
}
}

void makeThread()
{
const int num=5;
HANDLE THandle[num];
unsigned threadID;
int step=(int)(1.0*NumData/num);
for(int i=0;i int awal=i*step;
int akhir=(i+1)*step;
if(i==(num-1))akhir=NumData;
paramo *po=new paramo(counter,awal,akhir,i);
//cout<start<<" "<end<<" "<ID< THandle[i]=(HANDLE)_beginthreadex(NULL,0,(unsigned (__stdcall *)(void *))ThreadFunc,po,0,&threadID);
}
WaitForMultipleObjects(num,THandle,TRUE,INFINITE);
CloseHandle(THandle);
}

int main()
{
    counter=new (nothrow) int[NumData];
if(counter==0){
cout<<"Gagal!"< return 1;
}
for(int i=0;i int j=0;
while(j<50000 p=""> makeThread();
for(int i=0;i if(i==1)cout< //counter[i]=0;
}
cout<<"\n";
j++;
}

delete [] counter;

return 0;
}

Tidak ada komentar:

Posting Komentar