使用pthread在C/C++中实现矩阵的加法和减法
这里我们将看到如何使用多线程环境执行矩阵加法和减法。 pthread用于在C或C++中同时执行多个线程。
有两个矩阵A和B。每个矩阵的阶数为(m x n)。每个线程将获取每一行,并执行加法或减法。因此,对于 m 行,有 m 个不同的线程。
示例
#include #include #include #include #define CORE 3 #define MAX 3 using namespace std; int AMat[MAX][MAX] = {{10, 20, 30}, {40, 50, 60}, {70, 80, 50} }; int BMat[MAX][MAX] = {{80, 60, 20}, {30, 20, 15}, {10, 14, 35} }; pthread_t thread[CORE * 2]; int add[MAX][MAX], sub[MAX][MAX]; void* addMatrices(void* arg) { intptr_t core = (intptr_t)arg; // Each thread computes 1/3rd of matrix addition for (int i = core * MAX / 3; i < (core + 1) * MAX / 3; i++) { for (int j = 0; j < MAX; j++) { add[i][j] = AMat[i][j] + BMat[i][j]; } } } void* subtraction(void* arg) { intptr_t core = (intptr_t)arg; // Each thread computes 1/3rd of matrix subtraction for (int i = core * MAX / 3; i < (core + 1) * MAX / 3; i++) { for (int j = 0; j < MAX; j++) { sub[i][j] = AMat[i][j] - BMat[i][j]; } } } void display(){ cout