日期:2014-05-16  浏览次数:20578 次

一个简单的线程程序,找错误。
C/C++ code

#include<stdio.h>
#include<pthread.h>

int num1,num2;
void * mythread(* attr)
{
    int * num=(int *)attr;
    printf("%d \n",*num);
}

int main(int agrc,char *argv[])
{
    pthread_t tid1,tid2;
    int status;
    num1 = 1;
    num2 = 2;
    status = pthread_create(&tid1,NULL,mythread,&num1);
    if(status){
        printf("create failed!");
        return -1;
    }
    
    status = pthread_create(&tid2,NULL,mythread,&num2);
    if(status){
        printf("create failed!");
        return -1;
    }
    
    status = pthread_join(tid1,NULL);
    if(status){
        printf("error!");
        return -1;
    }
    
    status = pthread_join(tid2,NULL);
    if(status){
        printf("error!");
        return -1;
    }
    return 0;
}


gcc后提示:
pthread_join.c: In function ‘main’:
pthread_join.c:17:37: error: ‘mythread’ undeclared (first use in this function)
pthread_join.c:17:37: note: each undeclared identifier is reported only once for each function it appears in



------解决方案--------------------
void * mythread(* attr)
不是一个函数的声明或定义