首页 > 解决方案 > 调用 Eigen 方法 .row() 导致相关线程终止后主程序意外崩溃

问题描述

我有一个大型C++ 多线程 Visual Studio 框架。主进程启动一组线程同时运行不同的例程,然后等待加入它们。但是,在运行时,我遇到了意外的行为,因为主程序在加入所有线程之前终止并关闭,但命令行中没有显示任何断言、异常或错误消息。

经过几次试验和调试操作,我可以在程序的正常工作行为(正确的线程连接和终止)和不希望的行为之间隔离单个原子更改。特别是,我观察到主程序在调用.row()Eigen 矩阵上的Eigen 方法的线程回调结束后意外终止:线程回调似乎正确执行了相关指令(即,输出向量成功分配给所选行输入矩阵)并正确完成,但由于某种原因,主线程无法加入它并立即终止。如果我用.row()vector 的显式元素分配代替对该方法的调用,则不会发生此行为,主线程正确加入,程序按预期继续并终止。

我真的不知道我遇到的问题是否是由这种 Eigen 方法引起的,但我找不到任何其他区分因素来调试问题。

有没有人对这个问题背后的原因有一个可能的想法或建议?我知道我的问题的表述非常笼统,可能是由于大量原因造成的,但我什至无法猜测我需要将重点放在哪里来解决它。

提前致谢

标签: c++multithreadingeigen

解决方案


推荐阅读