使用pthread在C/C++中实现矩阵的加法和减法

使用pthread在c/c++中实现矩阵的加法和减法

这里我们将看到如何使用多线程环境执行矩阵加法减法pthread用于在C或C++中同时执行多个线程。

有两个矩阵A和B。每个矩阵的阶数为(m x n)。每个线程将获取每一行,并执行加法或减法。因此,对于 m 行,有 m 个不同的线程。

示例

#include#include #include #include #define CORE 3#define MAX 3using 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 << "Matrix A: " << endl;   for(int i = 0; i < MAX; i++) {      for(int j = 0; j < MAX; j++) {         cout << AMat[i][j] << " ";      }      cout << endl;   }   cout << "nMatrix B: " << endl;   for(int i = 0; i < MAX; i++) {      for(int j = 0; j < MAX; j++) {         cout << BMat[i][j] << " ";      }      cout << endl;   }}void displayRes(){   cout << "nAddition: " << endl;   for(int i = 0; i < MAX; i++) {      for(int j = 0; j < MAX; j++) {         cout << add[i][j] << " ";      }      cout << endl;   }   cout << "nSubtraction: " << endl;   for(int i = 0; i < MAX; i++) {      for(int j = 0; j < MAX; j++) {         cout << sub[i][j] << " ";      }      cout << endl;   }}main() {   display();   int step = 0;   for (int i = 0; i < CORE; i++) {      pthread_create(&thread[i], NULL, &addMatrices, (void*)step);      pthread_create(&thread[i + CORE], NULL, &subtraction, (void*)step);      step++;   }   for (int i = 0; i < CORE * 2; i++) {      pthread_join(thread[i], NULL);   }   displayRes();}

输出

Matrix A:10 20 3040 50 6070 80 50Matrix B:80 60 2030 20 1510 14 35Addition:90 80 5070 70 7580 94 85Subtraction:-70 -40 1010 30 4560 66 15

以上就是使用pthread在C/C++中实现矩阵的加法和减法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1443908.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月17日 20:44:40
下一篇 2025年12月8日 09:57:48

相关推荐

  • 检查给定的二进制矩阵中是否存在连续的T个0的块

    简介 二元矩阵广泛应用于计算机科学和各个领域,以有效地表示数据或解决复杂问题。在某些情况下,识别给定的二进制矩阵是否包含连续的零块变得很重要。在本文中,我们将使用 C++ 代码探索一种优雅的解决方案,该解决方案允许我们检测给定二进制矩阵中是否存在 T 个连续的零块。这种方法既直观又高效,适合实际实施…

    2025年12月17日
    000
  • 使用C语言编写的二分查找程序,使用pthread进行多线程处理

    我们知道二分查找方法是一种最适合和有效的排序算法。这个算法适用于已排序的序列。算法很简单,它只是从中间找到元素,然后将列表分成两部分,并向左子列表或右子列表移动。 我们知道它的算法。现在我们将看到如何在多线程环境中使用二分查找技术。线程的数量取决于系统中存在的核心数。让我们看一下代码以了解思路。 示…

    2025年12月17日
    000
  • Numpy入门指南:矩阵逆的计算步骤简介

    Numpy入门指南:矩阵逆的计算步骤简介 概述:矩阵逆是数学中非常重要的操作,可以用来解决线性方程组和矩阵运算中的一些问题。在数据分析和机器学习中,矩阵逆也经常被用来进行特征值分析、最小二乘法估计、主成分分析等等。在Numpy这个强大的数值计算库中,计算矩阵逆非常简单。本文将简要介绍使用Numpy计…

    2025年12月13日
    000
  • numpy如何求矩阵的逆

    numpy求矩阵的逆的步骤:1、导入numpy库,import numpy as np;2、创建一个方阵矩阵,A = np.array([[1, 2], [3, 4]]);3、使用np.linalg.inv()函数求矩阵的逆,A_inv = np.linalg.inv(A);4、输出结果,print…

    2025年12月13日
    000
  • 探索人工智能历史与矩阵:人工智能教程(二)

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 在本系列的第一篇文章中,我们讨论了人工智能、机器学习、深度学习、数据科学等领域的关联和区别。我们还就整个系列将使用的编程语言、工具等做出了一些艰难的选择。最后,我们还介绍了一点矩阵的知识。在本文…

    2025年11月26日 科技
    100
  • 普林斯顿Infinigen矩阵开启!AI造物主100%创造大自然,逼真到炸裂

    尼奥发现自己生活的世界并非真实存在,而是被精心设计的模拟现实。 而你,有没有那么一瞬间,认为我们生活的世界,就是模拟的矩阵世界。 而现在,矩阵正式开启。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 静心感受,这个人类生存已久的地球,大自然…

    2025年11月9日 科技
    100

发表回复

登录后才能评论
关注微信