解决方法
全局对象的析构函数由std :: exit调用.当main返回时,该函数由C运行时调用.
可以安排std :: exit由除了进入main之外的线程调用.例如.:
struct A { A() { std::cout << std::this_thread::get_id() << '\n'; } ~A() { std::cout << std::this_thread::get_id() << '\n'; } }; A a; int main() { std::thread([]() { std::exit(0); }).join(); }
输出:
140599080433472 140599061243648
有关详细信息,请参见std::exit
和std::atexit
.