Код: Выделить всё
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
int *Mas;
struct ParamData{
int id;
int Size;
int **mas;
};
void find_func(LPVOID Param)
{
ParamData *tmp = (ParamData *) Param;
int Max = tmp->mas[tmp->id][0];
for(int i = 1; i < tmp->Size; i++)
{
if(tmp->mas[tmp->id][i] > Max)
Max = tmp->mas[tmp->id][i];
}
Mas[tmp->id] = Max;
cout << Max;
}
int _tmain(int argc, _TCHAR* argv[])
{
int n;
cout << "Enter the array size:";
cin >> n;
cout << n;
ParamData *Param = new ParamData;
Param->Size = n;
Param->mas = new int*[n];
for(int i = 0; i < n; i++)
{
Param->mas[i] = new int[n];
for(int j = 0; j < n; j++)
{
Param->mas[i][j] = (rand()%100);
cout << Param->mas[i][j] << " ";
}
cout << endl;
}
Mas = new int[n];
HANDLE *Threads = new HANDLE[n];
for(int i = 0; i < n; i++)
{
Param->id = i;
Threads[i] = CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)find_func,
(LPVOID *)Param,
0,
0);
}
DWORD wait = WaitForMultipleObjects(
n,
Threads,
false,
INFINITE
);
int tmp = Mas[0];
for (int j = 1; j<n; j++)
{
cout << tmp;
if(Mas[j]>tmp)
tmp = Mas[j];
}
cout << endl << tmp;
_getch();
return 0;
}