单个Pthread打印

时间:2016-11-09 19:07:34

标签: c pthreads

我正在尝试用C中的Pthreads实现一个程序。现在,我试图让一个线程打印一些东西:

void * generator(void *arguments){
     printf("Hi");
     return NULL;
}

int main(int argc, const char* argv[]){
     pthread_create(&threads_ids[0], NULL, &generator, NULL);=
}

这不起作用,也不会打印任何内容。但是,当我在for循环中创建pthread时,它会打印“Hi”,但在每次执行时都会出现不同的情况。

这是正常的行为,如果是这样的话;我该怎么解决?提前谢谢!

1 个答案:

答案 0 :(得分:7)

这是因为你的主线程返回并因此退出进程。这意味着您创建的主题永远不会有机会运行。

与从main()返回,从main()调用pthread_exit(0)不同,将让另一个线程继续执行。

或者,您可以通过在您创建的主题上调用pthread_join()来等待线程完成执行。

当你在循环中执行时,你创建的某些线程可能会在主线程退出之前执行,因此看起来“工作”(打印一些Hi)。 但它确实存在与您发布的代码相同的问题。