【发布时间】:2013-08-07 23:39:02
【问题描述】:
我想知道当对象卡在另一个线程中的无限while循环中时,在对象上调用析构函数会发生什么。
// Main thread creates the object
MyClass _obj = new MyClass():
// doing some stuff
delete _obj;
在哪里,
MyClass::MyClass()
{
// Start a thread which calls MyClass::MyPollingFn()
}
MyClass:: MyPollingFn()
{
// runs in new child thread
while(true)
{
// doing some work
// sleep(5 seconds)
}
}
说明: MyClass 有一个类对象,它创建一个线程并在无限循环中运行 MyPollingFn 方法。此方法的每次迭代都可以更改一些类变量。可以从持有对象的父线程中销毁对象吗?这有没有可能引起问题?
【问题讨论】:
-
是的,100% 保证会导致问题
-
可以吗?如果您想要定义的行为,则不是。在你的线程被终止之前不要销毁它。
标签: c++ linux while-loop destructor infinite-loop