在C++中使用pthread_exit()安全吗

Is it safe to use pthread_exit() in C++?

本文关键字:exit 安全 pthread C++      更新时间:2023-10-16

pthread_exit()没有堆栈展开机制。我们能完全避免在C++中使用pthread_exit()吗?或者,在C++中,我们是否需要这个API而不是从线程返回函数?

pthread函数是特定于平台的。C++有自己的依赖于平台的线程API。它没有对应于pthread_exit的函数。使用std::thread API,不必担心pthread。

如果需要在不显式返回到线程启动函数的情况下在中间终止线程,请抛出异常并在启动函数中捕获它。这将正确展开堆栈。

引用文档:

当第一次调用main()的线程以外的线程从用于创建它的启动例程返回时,会对pthread_exit()进行隐式调用。函数的返回值用作线程的退出状态。

这意味着你不需要自己调用它,除非你想避免从该函数返回(可能是裸函数,或者中断处理程序或一些非常低级的东西)。