std :: thread据说导致无法使用的堆栈跟踪

suj*_*jat 8 c++ multithreading pthreads stdthread

这个问题与所谓的劣势有关std::thread.昨天我偶然穿越了Lyft 的流行开源分布式代理特使.当我研究他们的穿线部分时,我发现了一个引起我注意的评论.该评论说以下内容:

用于pthread线程的包装器.我们不使用std :: thread,因为它会占用异常并导致无法使用的堆栈跟踪

我不确定吃掉异常和不可用的堆栈跟踪是什么意思.

任何人都可以解释它意味着什么以及为什么会std::thread导致不可靠的堆栈跟踪?

Ala*_*les 5

据推测,他们有一些自定义异常处理机制,可以使用堆栈跟踪记录未捕获的异常.

std::thread 定义为捕获未处理的异常并调用std :: terminate:

如果它通过抛出异常终止,则调用std :: terminate

https://en.cppreference.com/w/cpp/thread/thread