【发布时间】:2012-01-27 00:13:20
【问题描述】:
使用 MS VC++ 和 Boost 线程,我在主线程中有一个例程 - 实际上是一个 Windows 过程 - 被多次调用。在每次调用中,例程都会创建一个新线程 - 我计划通过 new 将线程对象创建到持久空间中,并将结果附加到全局 -static-pointer-。如果在下一次调用重例时,前一个线程仍在运行,我需要终止前一个线程。
我读过:“正如文件的生命周期可能与代表文件的 iostream 对象的生命周期不同,执行线程的生命周期可能与代表线程的线程对象不同执行。特别是,在调用 join() 之后,执行线程将不再存在,即使线程对象继续存在直到其正常生命周期结束。反之亦然;如果线程对象被销毁而没有join() 首次被调用后,执行线程将继续执行,直到其初始函数完成”。
在重新发明轮子之前,问题是:是否有标准方法来检测线程是否仍在运行?在这种情况下:终止它的规范方法是什么?
提前致谢。
【问题讨论】:
标签: windows visual-c++ boost-thread