使用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月17日 20:44:56

相关推荐

  • 关于css3中矩阵的使用方法

    这篇文章主要介绍了css3 矩阵的使用详解的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 css3 矩阵变化. 应用格式为: transform: matrix(a,b,c,d,e,f);对应于就是: 实际应用中的转换就是: 立即学习“前端免费学习笔记(深入)…

    2025年12月24日
    000
  • 如何使用HTML5创建一个变换矩阵?

    In the following article, we are going to learn about how to create a transformation matrix with HTML5. HTML5 canvas provides methods that allow modif…

    2025年12月21日
    000
  • 不使用乘法、除法和取模运算符来进行两个整数的除法

    在这个问题中,我们只需要将两个整数相除,而不需要使用乘法、除法和取模运算符。尽管我们可以使用加法、乘法或位操作。 问题陈述指出我们将得到两个整数 x 和 y。在不使用乘法、除法或取模运算符的情况下,我们需要确定 x 除以 y 后的商。 示例 输入:x=15,y=5 输出:3 输入:x=10,y=4 …

    2025年12月17日
    000
  • 使用位运算进行加法和乘法的C程序

    按位运算符对位进行运算(即对操作数的二进制值进行运算) 运算符 描述 &按位AND|按位或^按位异或左移>>右移-补码 按位与 aba & b0 00010100111 按位或 aba | b000011101 tr>111 按位异或 a ba^b000011101…

    2025年12月17日
    000
  • 在C程序中,以矩阵对角线模式打印数字

    任务是打印一个 n x n 的对角线模式的矩阵。 如果 n 是 3,那么打印一个对角线模式的矩阵如下: 所以输出将会是: 示例 Input: 3Output: 1 2 4 3 5 7 6 8 9Input: 4Output: 1 2 4 7 3 5 8 11 6 9 12 14 10 13 15 1…

    2025年12月17日
    000
  • 使用C++编写的矩阵中找到具有最大和的一对的算法

    在本文中,我们将讨论在给定矩阵或二维数组中查找具有最大和的对。例如 Input : matrix[m][n] = { { 3, 5, 2 }, { 2, 6, 47 }, { 1, 64, 66 } }Output : 130Explanation : maximum sum is 130 from…

    2025年12月17日
    000
  • 查询以更新的矩阵中连接的非空单元格的数量

    矩阵可以被认为是按行和列组织的单元格的集合。每个单元格可以包含一个值,该值可以为空或非空。在计算机编程中,矩阵通常用于表示二维网格中的数据。 在本文中,我们将讨论如何有效地计算矩阵中连接的非空单元格的数量,同时考虑到矩阵可能的更新。我们将探索解决此问题的不同方法,并提供真实的代码示例来演示实现。 语…

    2025年12月17日
    000
  • 使用C++编写,在矩阵中找到给定和的一对数字

    在本文中,我们将讨论在给定矩阵中查找具有给定和的对的程序。例如 – Input : matrix[n][m] = { { 4, 6, 4, 65 }, { 56, 1, 12, 32 }, { 4, 5, 6, 44 }, { 13, 9, 11, 25 } }, SUM = 20Out…

    2025年12月17日
    000
  • 打印矩阵的对角线模式

    给定一个 n*n 的二维数组,任务是找到给定矩阵的反螺旋排列 Input : arr[4][4]={1,2,3,4, 5,6,7,8, 9,10,11,12 13,14,15,16}Output : 1 6 11 16 4 7 10 13 算法 STARTStep 1 -> declare s…

    2025年12月17日
    000
  • C++程序计算矩阵对角线之和

    The utilization of 2-dimensional arrays or matrices is extremely advantageous for severalapplications. Matrix rows and columns are used to hold number…

    2025年12月17日
    100
  • 一个矩阵概率问题?

    这里我们将看到一个矩阵概率问题。我们有一个矩形矩阵。我们可以以相同的概率从当前单元格移动四个方向。这四个方向是左、右、上、下。我们要计算从位置M[i,j]开始N次移动后的概率。 这里我们要做一些与DFS相关的事情。我们将从当前房间开始递归遍历四个可能的房间。然后我们就计算少走一步的概率。由于四个方向…

    2025年12月17日
    000
  • 检查给定的二进制矩阵中是否存在连续的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

发表回复

登录后才能评论
关注微信