在noexcept标记的方法中调用pthread_exit(0)触发SIGABRT的问题咨询
在noexcept标记的方法中调用pthread_exit(0)触发SIGABRT的问题咨询
问题描述
最近用C++17结合pthreads库写多线程程序时,碰到了一个让我摸不着头脑的问题:如果在标记为noexcept的成员方法里调用pthread_exit(),程序会直接触发SIGABRT信号终止。我自己大概能猜到可能和异常处理机制有关,但始终搞不透具体的逻辑,想请有经验的前辈帮忙解释下这背后的原因。
示例代码(已更新)
#include <vector> #include <pthread.h> class worker { public: void main() noexcept { std::vector<int> foo; pthread_exit(nullptr); // 执行此处会触发SIGABRT } };
内容来源于stack exchange
相关产品推荐
相关产品推荐

