【发布时间】:2021-05-27 12:26:47
【问题描述】:
我有一个这样的单身人士:
class MySingleton{
public:
void StartThread();
static MySingleton& GetInstance(){
static MySingleton st;
return st;
}
// copied forbidden here
...
//
private:
// resources defined here
...
//
};
void DoStuff(MySingleton*);
函数StartThread() 启动一个分离的 std::thread 来执行DoStuff(MySingleton*),它利用了单例实例拥有的资源。
我的问题是:是否保证线程在单例销毁之前(程序退出时)退出,从而不使用释放的资源?
【问题讨论】:
-
避免像瘟疫这样的事情。当您认为您已经涵盖了所有案例时,您只会找到另一个案例。
-
重新审视为什么需要分离线程。除非您在
main退出之前干净地完成线程,否则它将成为无法解释的关闭错误的来源。也就是你不妨加入线程作为main的结尾,而不是分离它。
标签: c++ multithreading