https://computing.llnl.gov/tutorials/pthreads/samples/join.c
请参阅上面链接中的代码。
问题:
BusyWork
)应该返回void *
,而是以对pthread_exit()
的调用结束(返回void
)。为什么这不会被标记为失败或错误?我也没有得到任何警告。
答案 0 :(得分:3)
缺少的链接取自man pthread_create
:
创建后,线程执行start_routine,arg作为唯一参数。如果start_routine返回,则效果就像是对pthread_exit()的隐式调用,使用start_routine的返回值作为退出状态。
所以你有两个选择(选择一个):
pthread_exit
pthread_exit
至于为什么它没有被标记:因为编译器知道pthread_exit
永远不会返回。如何实现这取决于编译器。在GCC上,可以使用__attribute__((__noreturn__))
完成。