我有这样的C代码:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int sumofinpoint=0;
int numofpoint=0;
void *montecarlo(int number)
{
srand((unsigned int)time(NULL));
float a = 2.0;
int i=0;
for (i=0;i<(int)number;i++){
float x,y;
x=((float)rand()/(float)(RAND_MAX)) * a -1;
y=((float)rand()/(float)(RAND_MAX)) * a -1;
numofpoint++;
if((x*x + y*y) <= 1){
sumofinpoint=sumofinpoint+1;
}
}
}
int main(){
pthread_t tid[15];
float pi;
int number = 100000000;
int i=0;
for(i = 0; i<15;i++){
pthread_create(&tid[i], NULL, montecarlo, (int)(number/15));
pthread_join(tid[i],NULL);
}
pi = 4*(float)sumofinpoint/(float)number;
printf("So pi la: %f",pi);
return 0;
}
我在Linux中编译它,但它说我有#34;未定义的引用pthread_create&#34;和&#34;对pthread_join&#34;的未定义引用。但是当我在Window中编译DevC ++时,它运行得非常好。我哪里错了?
答案 0 :(得分:1)
将-lpthread
转到gcc
(假设您正在使用gcc
)。