我正在尝试用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);=
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,不打印任何东西.但是,当我将pthread的创建放在for循环中时,它会打印"Hi",但在每次执行时,该事件都会有所不同.
这是正常行为,如果是这样的话; 我该怎么解决?提前致谢!
这是因为你的主线程返回并因此退出进程.这意味着您创建的线程永远不会有机会运行.
不像从main()返回,从main()调用pthread_exit(0)
,将让另一个线程继续执行.
或者,您可以通过调用pthread_join()
您创建的线程来等待线程完成执行.
当你在循环中执行时,你创建的一些线程可能会在主线程退出之前执行,因此看起来"工作"(打印一些Hi
).但它确实存在与您发布的代码相同的问题.