所以,所以标题听起来很疯狂,我认为代码可以更好地理解我的问题
class Class
{
public:
static void* thread_func(void *thisObject)
{
// do some work
delete thisObject; // cleanup
}
start_thread()
{
auto worker = std::thread(thread_func, this);
worker.detach();
}
};
如何使用这个类
Class *p = new Class;
p->start_thread(); // start some work in parralel and return from function
因此,我需要在 thread_func 完成后删除分配的对象。实现此类行为的最佳方式是什么?如代码示例所示,从线程函数中删除 thisObject 效果很好,但看起来不太好。
最佳答案
你真的不能那样做。一方面,您没有阻止任何人对您的类的实例进行堆栈分配。您可以这样做,但这可能只会导致更多问题。
相反,让您的线程函数简单地删除类中保存的内部资源。但不是类的实例。如果需要,您可以将类一分为二——一个管理删除另一个保存真实状态的类。
关于c++ - 从这个对象的方法开始的线程中销毁类对象的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34359332/