pthread_exit
放置在return 0;
之前的main()确实会阻止线程在完成其分配的任务之前退出。
我希望详细了解的原因。
我在线程应该工作的函数中放了一个while循环。 当时的情况不满足,但程序终止了。当我在返回0之前将pthread_exit放在main中时,while循环完成了它的任务。 因此问题。
操作系统:Linux
答案 0 :(得分:3)
使用return语句从main()
返回等同于调用exit()
---它终止进程,而不等待其他线程完成。
调用pthread_exit()
只退出调用它的线程(即使该线程是运行main()
的线程),因此其他线程将继续运行,直到某个线程调用exit()
(或另一个终止进程的函数,例如abort()
),或者每个线程都已退出。