求教多线程编程问题

发布于 2022-10-15 08:05:46 字数 3344 浏览 17 评论 0

环境UBUNTU11.04
阵A,B的积以及分析它们每个所用的时间
C(i,k) = Sum of A(i,j)*B(j,k) for j = 1, 2, ..., 1000

问题:通过2个线程对矩阵进行求合运算

我在韩国留学,我这个学期上操作系统的理论课,这是高丽棒子留给的作业,但是他什么都没教,直接上那么难的题目,我做出了基本的框架,但是无法运行,我是C语言初学者,请大侠多多指教!

/*define header files*/
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/time.h>
#include <string.h>

/*define function */

int ma[1000][5];
int mb[5][1000];
int mc[1000][1000];
double duration;
pthread_mutex_t mut;

/*sub_thread function*/
void *func()
{
  /*thread compute*/
  int i,j,k;

/*set 10 seeds*/
   srand(10);
for(i=0;i<1000;i++){
        for(j=0;j<5;j++){
          for(k=0;k<1000;k++){
            
          ma[i][j]=rand()%20;/*random numbers within 0-20*/
          mb[j][k]=rand()%20;
          pthread_mutex_lock(&mut);
          mc[i][k]+=ma[i][j]*mb[j][k];
          pthread_exit(NULL);
        }
}
}
pthread_exit(NULL);
for(i=0;i<1000;i++){
      for(k=0;k<1000;k++){
    printf("%d\t",mc[i][k]);/*print matrix*/
   }
printf("\n";
}
}

/*create threads*/
int main(int argc,char* argv[])
{
  int i;
  pthread_t tid;
  /*initialize lock*/
  int temp;
  memset(&tid, 0, sizeof(tid));
  pthread_mutex_init(&mut,NULL);          
  for(i=0;i<2;i++){
            temp=pthread_create(&tid,NULL,func,NULL);
          
            pthread_join(tid,NULL);

          }

            printf("finish!";
          }

在UBUNTU下GCC编译后,结果为
/tmp/ccCY5xPo.o: In function `main':
problem3.c.text+0x1af): undefined reference to `pthread_create'
problem3.c.text+0x1c7): undefined reference to `pthread_join'
collect2: ld returned 1 exit status

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏末 2022-10-22 08:05:46

编译时要要加-lpthread

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文