我有以下情况:
SWIG 包装的类A
(包含一个 std::thread,它在销毁时加入,并且正在运行自己的 Tcl 解释器) Tcl 解释器提示%
% A a
% a -delete
% exit
以上工作正常。A a
GDB 报告由 object产生的线程a
已停止。
% A a
% exit
上述结果导致底层 C++ 类的析构函数没有被调用,线程继续运行,并在程序退出时破坏(在仍在运行的线程中,这对于它的突然消失完全没有准备好)。这很好,很花哨,因为它是程序退出,但它并没有让我对为什么不调用析构函数感到疑惑。
SWIG 中是否有某种设置可以用来告诉它自行清理?
(故意没有用 C++ 标记,因为这个问题真的与 C++ 无关......)