当我用C++杀死一个pThread时,堆栈上的对象的析构函数会被调用吗?

ano*_*non 11 c++ destructor pthreads

我正在编写一个多线程C++程序.我计划杀死线程.但是,我也在使用重新计算的GC.我想知道当线程被杀死时堆栈分配的对象是否被破坏.

Wil*_*ill 15

当你"杀死"一个线程时,堆栈不会展开.

杀死线程并不是一种强大的操作方式 - 它们打开的资源(例如文件)在进程关闭之前保持打开状态.此外,如果他们在您关闭它们时保持打开任何锁定,则锁定可能会保持锁定状态.请记住,您可能会调用许多您无法控制的平台代码,并且您无法始终看到这些内容.

关闭线程的优雅健壮的方法是中断它 - 通常它会轮询以查看它是否被告知定期关闭,或者它正在运行消息循环并且您发送一个退出消息.