该程序在捕获异常处理程序之前终止
"start": "npm install && npm run serve:ssr"
我想处理异常处理程序,但是程序在堆栈展开期间终止。我该怎么做才能确保在取消堆栈堆栈的过程中连接线程?
答案 0 :(得分:1)
我认为在堆栈展开期间加入线程是一个坏主意。暂停析构函数直到将来发生不可控制的事件,这使得应用程序很难进行推理。
我相信,这是std::thread
析构函数抛出而不加入线程的原因之一。
现在,您的问题。
第一个解决方案是超级简单-将std::thread
包装在您自己的对象中,该对象将join
称为析构函数。我认为,出于上述原因,这不是一个很好的方法。
第二个选项是执行另一个包装对象-一个将其线程中的析构函数分离的对象。我认为这更好,但是您显然有一个线程问题,该线程现在无法加入并等待完成。
为减轻这种情况,您可以扩展线程以通过您选择的任何机制来表示线程已完成,而不是等待该信号(从其他分离的线程发出信号)。但是,如果本地线程使用在堆栈展开期间将被破坏的对象,则仍然会遇到问题。对于这个问题,我认为没有好的解决方案。