【发布时间】:2017-12-06 21:14:36
【问题描述】:
我使用 boost::thread 来运行仿函数。我想看到对象 a 的析构函数在主线程中被调用两次。但是,有时,我发现析构函数在主线程中被调用一次,在被调用的线程中被调用一次。 A 类做了一些复杂的事情,因此这种现象并不总是发生。任何人都知道这怎么会发生?
int main()
{
A a; // A is a functor
boost::thread myThread(a);
while (true)
{
// sleep every second until interruption caught
}
myThread.interrupt();
myThread.join();
}
顺便说一句,我现在使用 boost::thread myThread(boost::ref(a)) 并且一切似乎都运行良好。提前致谢。
【问题讨论】:
标签: c++ multithreading boost destructor