A
没有堆栈展开机制。我们可以完全避免在C ++中使用pthread_exit()
吗?或者,是否存在我们需要此API而不是从C ++中的线程函数返回的情况?
答案 0 :(得分:4)
引用文档:
当首次调用main()的线程以外的线程从用于创建它的start例程返回时,对pthread_exit()进行隐式调用。函数的返回值用作线程的退出状态。
这意味着您不需要自己调用它,除非您想避免从该函数返回(可能是裸函数,或者中断处理程序或某些非常低级别的东西)。
答案 1 :(得分:4)
pthread
函数是特定于平台的。 C ++有自己独立于平台的线程API。它没有与pthread_exit
对应的功能。使用std :: thread API,不要担心pthreads。
如果需要在中间终止线程而不显式返回到线程启动函数,则抛出异常并在启动函数中捕获它。这将正确展开堆栈。