今天很巧再一次调试了多线程的代码。主要思想就是:通过pthread_create创建一个线程,然后通过主线程A控制创建出来的线程B,完成各种功能。
video_thread()
{
while()
{
display();
}
exit(0);
}
main()
{
pthread_create(&video,,video_thread,);
while(quit)
{
pthread_join(video,NULL);
quit = 0;//退出主线程
}
printf("terminate all process \n")
}
然后发现当video_thread退出的时候,主线程的printf没有打印出terminate all process。有点懵了......后来。这是为什么呢,几经周折在网上终于查到了exit函数。原来在调用exit函数后创建的video线程退出了,这个exit退出的太干净,什么都没有留下。所以pthread_join一直在等待中,等待线程退出的消息。
随后把exit换成printf(“closed video\n”)终于得到了想好的答案。
记录一下,以便后忘。