试用线程的方法编写两个 4*4矩阵的相乘的计算程序,用4个线程完成结果 矩阵每一行的计算。
时间: 2024-02-16 11:02:28 浏览: 25
好的,我可以为您解答。下面是使用线程编写两个矩阵相乘的示例代码:
```c++
#include <iostream>
#include <thread>
using namespace std;
const int ROWS = 4;
const int COLS = 4;
int matrix1[ROWS][COLS] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16} };
int matrix2[ROWS][COLS] = { {1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16} };
int result[ROWS][COLS];
void multiply(int start, int end) {
for (int i = start; i < end; i++) {
for (int j = 0; j < COLS; j++) {
result[i][j] = 0;
for (int k = 0; k < COLS; k++) {
result[i][j] += matrix1[i][k] * matrix2[k][j];
}
}
}
}
int main() {
thread t1(multiply, 0, 1);
thread t2(multiply, 1, 2);
thread t3(multiply, 2, 3);
thread t4(multiply, 3, 4);
t1.join();
t2.join();
t3.join();
t4.join();
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
cout << result[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
这个程序中,我们定义了两个 4x4 的矩阵 `matrix1` 和 `matrix2`,以及一个结果矩阵 `result`。然后我们使用了 4 个线程来计算结果矩阵的每一行,每个线程计算一行。`multiply` 函数就是每个线程要执行的任务,它接受两个参数 `start` 和 `end`,表示要计算的行数范围。在 `multiply` 函数中,我们使用了三重循环来计算每个元素的值,并将结果存入 `result` 矩阵中。
最后,我们使用 `join` 函数等待所有线程执行完毕,然后输出结果矩阵。
希望这个示例代码能够帮助您理解如何使用线程来编写矩阵相乘的计算程序。如果还有任何问题,请随时提出。