求教多线程编程问题
环境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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
编译时要要加-lpthread