【发布时间】:2014-02-18 17:14:53
【问题描述】:
我正在使用一个开始和结束线程的类。线程是在构造函数中创建的。只要标志为 TRUE,线程函数就会继续循环。标志是类的静态成员。解构器将标志设置为 FALSE。这样,类的每个实例都有一个关联线程,该线程在实例的生命周期内运行。
我试图了解解构器运行时会发生什么,以及这是否是结束线程的好方法。我对多线程没有太多经验。
这就是我认为会发生的事情。在解构器内部,标志将设置为 FALSE。让我们假设 Sleep() 正在无限运行。对象被销毁,但标志仍然存在于内存中,因为它是静态的。但是整个过程正在结束,比方说,所以在某些时候静态标志会消失。标志会在线程之前消失吗?如果线程被进程结束强制返回,线程甚至不再关心标志吗?我不知道此时会发生什么。
我在 Visual Studio 2010 中使用 Visual C++。
【问题讨论】:
-
你可以在解构器中更改标志后等待线程完成。
标签: c++ c multithreading visual-c++ process