我正在使用一个启动和结束线程的类。该线程在构造函数中创建。线程函数有一个循环,只要标志为TRUE就会继续运行。这个标志是类的静态成员。析构函数将标志设置为FALSE。这样,每个类实例都有一个关联的线程,该线程在实例的生命周期内运行。
我试图理解析构函数何时运行以及这是否是结束线程的正确方法。我没有太多的多线程经验。
下面是我的理解。在析构函数中,标志将被设置为FALSE。假设Sleep()无限运行。对象被销毁,但标志仍然存在于内存中,因为它是静态的。但整个进程正在结束,所以在某个时刻静态标志将消失。标志会在线程之前消失吗?如果线程被强制返回并且进程正在结束,线程是否仍然关心标志?我不知道发生了什么。
我正在使用Visual Studio 2010中的Visual C++。