Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<cstdlib>
- #include<ctime>
- #include<thread>
- const int MAX = 4;
- const int x = 2;
- int step_i = 0;
- using namespace std;
- void mult(int **A,int **B,int **C)
- {
- int core = step_i++;
- for (int i = core * MAX / 4; i < (core + 1) * MAX / 4; i++) {
- for (int j = 0; j < MAX; j++) {
- C[i][j] = 0;
- for (int k = 0; k < MAX; k++) {
- C[i][j] += A[i][k] * B[k][j];
- }
- }
- }
- cout << "mtr C" << endl;
- for (int i = 0; i < MAX; i++) {
- for (int j = 0; j < MAX; j++) {
- cout << C[i][j] << " ";
- }
- cout << endl;
- }
- }
- int main()
- {
- srand(static_cast<unsigned int>(time(0)));
- int **A, **B, **C;
- A = new int*[MAX];
- B = new int*[MAX];
- C = new int*[MAX];
- for (int i = 0; i < MAX; i++) {
- A[i] = new int [MAX];
- B [i]= new int [MAX];
- C [i]= new int [MAX];
- }
- for (int i = 0; i < MAX; i++) {
- for (int j = 0; j < MAX; j++) {
- A[i][j] = rand() % 5;
- B[i][j] = rand() % 5;
- }
- }
- cout << "mtr A" << endl;
- for (int i = 0; i < MAX; i++) {
- for (int j = 0; j < MAX; j++) {
- cout << A[i][j] << " ";
- }
- cout << endl;
- }
- cout << "mtr B" << endl;
- for (int i = 0; i < MAX; i++) {
- for (int j = 0; j < MAX; j++) {
- cout << B[i][j] << " ";
- }
- cout << endl;
- }
- std::thread threads[x];
- for (int i = 0; i < x; i++) {
- threads[i] = std::thread(mult,i);
- }
- for (int i = 0; i < x; i++) {
- threads[i].join();
- }
- for (int i = 0; i < MAX; i++)
- {
- delete[] A[i];
- }
- delete[] A;
- for (int i = 0; i < MAX; i++)
- {
- delete[] B[i];
- }
- delete[] B;
- for (int i = 0; i < MAX; i++)
- {
- delete[] C[i];
- }
- delete[] C;
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement