69,373
社区成员
发帖
与我相关
我的任务
分享
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#define M 5
#define K 4
#define N 3
int A[M][K],B[K][N],C[M][N];
struct mypar
{
int row;
int line;
};
void* Times(void* arg1) //
{
struct mypar * arg = (struct mypar *)arg1;//
int row,line;
int i;
row = arg->row;//
line = arg->line;//
C[row][line] = 0;
for(i = 0;i < K;i++)
C[row][line] += A[row][i]*B[i][line];
}
int main(void)
{
int i,j;
for(i = 0;i < M;i++)
for(j = 0;j < K;j++)
scanf("%d",&A[i][j]);
for(i = 0;i < K;i++)
for(j = 0;j < N;j++)
scanf("%d",&B[i][j]);
pthread_t id[M][N];
for(i = 0;i < M;i++)
for(j = 0;j < N;j++)
{
struct mypar par;
par.row = i;
par.line = j;
pthread_create(&id[i][j],NULL, Times,&par);//
}
for(i = 0;i < M;i++)
for(j = 0;j < N;j++)
pthread_join(id[i][j],NULL);
for(i = 0;i < M;i++)
for(j = 0;j < N;j++)
{
if(j == N-1)
printf("%d\n",C[i][j]);
else
printf("%d ",C[i][j]);
}
}