• 大小: 3KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-05-08
  • 语言: 其他
  • 标签: OS  

资源简介

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

资源截图

代码片段和文件信息

/*
5. 多线程矩阵乘法:传入两个4*4矩阵A、B,求出A×B的结果矩阵C;
要求:
(1)主线程接受用户输入的矩阵A/B的数据,并打印原始矩阵A/B ;
(2)用4个工作线程分别计算结果矩阵C的左上、右上、左下、右下四个2*2区域的结果;
(3)主线程等待4个工作线程完成,并打印矩阵C最终的最终结果。
*/
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#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();/*计算矩阵右下区域*/

int main(int argcchar *argv[])
{
    getMatrix_A();
    getMatrix_B();
    outMatrix_A();
    outMatrix_B();
    //使用线程计算矩阵左上、左下、右上、右下四个区域
    pthread_t tid1tid2tid3tid4;
    pthread_create(&tid1NULLleft_upNULL);
    pthread_create(&tid2NULLleft_downNULL);
    pthread_create(&tid3NULLright_upNULL);
    pthread_create(&tid4NULLright_downNULL);
    pthread_join(tid1NULL);
    pthread_join(tid2NULL);
    pthread_join(tid3NULL);
    pthread_join(tid4NULL);

    outMatrix_C();

    return 0;
}
void getMatrix_A()/*输入矩阵A*/
{
    int ij;
    write(1“Input matrix A:\n“16);
    for(i=0;i        for(j=0;j            scanf(“%d“&matrix_A[i][j]);
}
void getMatrix_B()/*输入矩阵B*/
{
    int ij;
    write(1“Input matrix B:\n“16);
    for(i=0;i        

评论

共有 条评论