线程之多线程矩阵乘法的实现

多线程矩阵乘法:传入两个4 * 4矩阵A、B,求出A×B的结果矩阵C
在这里插入图片描述
要求:(1)主线程接受用户输入的矩阵A/B的数据,并打印原始矩阵A/B ;(2)用4个工作线程分别计算结果矩阵C的左上、右上、左下、右下四个2*2区域的结果;(3)主线程等待4个工作线程完成,并打印矩阵C最终的最终结果。

/*头文件*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <pthread.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#define SIZE 4
/*全局变量*/
int matrix_A[SIZE][SIZE];
int matrix_B[SIZE][SIZE];
int matrix_C[SIZE][SIZE]={0};
/*函数声明*/
void getMatrix_A();/*输入矩阵A*/
void getMatrix_B();/*输入矩阵B*/
void outMatrix_A();/*输出矩阵A*/
void outMatrix_B();/*输出矩阵B*/
void outMatrix_C();/*输出矩阵C*/
void *left_up();/*计算矩阵左上区域*/
void *left_down();/*计算矩阵左下区域*/
void *right_up();/*计算矩阵右上区域*/
void *right_down();/*计算矩阵右下区域*/
/*主函数*/
略
/*4个线程函数*/
void *left_up()/*计算矩阵左上区域*/
{
    int i,j,k;
    for(i=0;i<SIZE/2;i++)
        for(j=0;j<SIZE/2;j++)
            for(k=0;k<SIZE;k++)
                matrix_C[i][j]+=matrix_A[i][k]*matrix_B[k][j];
}
void *left_down()/*计算矩阵左下区域*/
{
    int i,j,k;
    for(i=SIZE/2;i<SIZE;i++)
        for(j=0;j<SIZE/2;j++)
            for(k=0;k<SIZE;k++)
                matrix_C[i][j]+=matrix_A[i][k]*matrix_B[k][j];
}
void *right_up()/*计算矩阵右上区域*/
{
    int i,j,k;
    for(i=0;i<SIZE/2;i++)
        for(j=SIZE/2;j<SIZE;j++)
            for(k=0;k<SIZE;k++)
                matrix_C[i][j]+=matrix_A[i][k]*matrix_B[k][j];
}
void *right_down()/*计算矩阵右下区域*/
{
    int i,j,k;
    for(i=SIZE/2;i<SIZE;i++)
        for(j=SIZE/2;j<SIZE;j++)
            for(k=0;k<SIZE;k++)
                matrix_C[i][j]+=matrix_A[i][k]*matrix_B[k][j];
}

友情链接:
(1)多线程编程-矩阵乘法
https://blog.csdn.net/m15851813962/article/details/53317716

猜你喜欢

转载自blog.csdn.net/JxufeCarol/article/details/89111668
今日推荐