多线程的exit()逻辑

来源:互联网 发布:阿里数据库oceanbase 编辑:程序博客网 时间:2024/05/16 07:00

今天很巧再一次调试了多线程的代码。主要思想就是:通过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”)终于得到了想好的答案。


记录一下,以便后忘。


0 0