为什么这段代码没有运行?

时间:2012-02-21 12:18:56

标签: c multithreading pthreads

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;
}

2 个答案:

答案 0 :(得分:8)

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

如果您希望main等到线程完成,请尝试pthread_join(但是您可能根本没有线程)。

pthread_join(mythread, 0);
return 0;

答案 1 :(得分:4)

你必须在主线程中等待,在致电pthread_join()后使用pthread_create()