资源简介

linux下多线程实现矩阵乘法,可以对操作系统的线程有更多理解

资源截图

代码片段和文件信息

/*author :林海南
 *主要用M*N个计算线程进行数值计算,用一个打印线程来打印结果实现多线程编程
 *打印线程作为主线程,使得在计算进程结束之前,不能将结果进行打印,当然并行行并不是那么太好。
 *程序可以正常运行,不过由于线程等待条件过强,基本上还是一个线性的执行过程
*/
#include
#include
#include

#define NUMBER 1000
struct Info
{
     int i;
     int j;
};
int M=10;
int N=10;
int K=10;
int A[NUMBER][NUMBER];              //矩阵A
int B[NUMBER][NUMBER];              //矩阵B
int C[NUMBER][NUMBER];              //矩阵C
pthread_t threads[NUMBER][NUMBER];   //线程

void *multiply(void *tid)          //计算C矩阵中i,j位置的数值
{
     struct Info *temp =malloc(sizeof(struct Info));
     temp =(struct Info *)tid;
     int sum=0;
     int i;
     for(i=0;i     {
         sum +=A[temp->i][i]*B[i][temp->j]; 
     }
     C[temp->i][temp->j]=sum;    //结果放回C中
     return tid;
}
void *print(void *tid)          //打印结果函数,作为主函数
{
     int ij;
     for(i=0;i     {
        for(j=0;j        {
           printf(“%d “C[i][j])    ;
        }
        printf(“\n“);
     }
     retur

评论

共有 条评论