2012-02-21 215 views
2
void myThread(void *arg) { 
    printf("Thread ran!\n"); 
    pthread_exit(NULL); 
} 

int main() { 
    int ret; 
    pthread_t mythread; 
    ret=pthread_create(&mythread,NULL,myThread,NULL); 
    if (ret != 0) { 
      printf("Can’t create pthread (%s)\n", strerror(errno)); 
      exit(-1); 
    } 
    return 0; 
} 

回答

4

你必须在主线程等待,呼叫pthread_create()后使用pthread_join()

8

因为main立即返回,在线程有机会执行之前 - 尝试在return 0;之前添加sleep(1000);,并且您可能会发现它有效。

如果您想main等到线程完成,尽量pthread_join(但你可能也没有一个线程的话)。

pthread_join(mythread, 0); 
return 0; 
+1

为什么sleep()是你的第一个建议?在这种情况下这是一个不好的做法。 – UmNyobe 2012-02-21 12:41:35

+1

只是为了演示,真的。很明显睡眠是什么,但是如果你是多线程新手,pthread_join会做什么并不明显。 – 2012-02-21 12:50:04

+0

谢谢,但请考虑这段代码的错误如下: 1)未定义的引用'pthread_create'\t 2)make:*** [测试]错误1 – 2012-02-21 15:17:22