在C ++中使用pthread_exit()是否安全?

时间:2016-01-03 07:08:33

标签: c++ multithreading posix

A没有堆栈展开机制。我们可以完全避免在C ++中使用pthread_exit()吗?或者,是否存在我们需要此API而不是从C ++中的线程函数返回的情况?

2 个答案:

答案 0 :(得分:4)

引用文档:

  

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

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

答案 1 :(得分:4)

pthread函数是特定于平台的。 C ++有自己独立于平台的线程API。它没有与pthread_exit对应的功能。使用std :: thread API,不要担心pthreads。

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