使用 boost::thread 运行函子,但析构函数被错误地调用
use boost::thread to run a functor but destructor is wrongly called
我使用 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((,一切似乎都运行良好。提前谢谢。
boost::thread
复制参数并将副本传递给线程函数或函数对象的operator()
。
如果需要传递引用,请像现在一样使用boost::ref
。
相关文章:
- 不命名构造函数和析构函数上的类型错误
- 导致 Seg 错误的 SingleLinkedList 的析构函数
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 矢量擦除调用的错误析构函数
- 在析构函数中调用"delete"运算符时"compiler is out of heap space"编译器错误
- 在Visual Studio中,与std::async一起使用时不调用"thread_local"变量"析构函数,这是一个错误吗?
- 导致堆缓冲区错误的动态分配数组的析构函数
- Qt C++析构函数错误
- C++ 链接列表队列实现和析构函数错误:"Aborted (Core Dumped)"
- 使用此指针时出现C++析构函数错误的原因
- 是否有某种方法可以检测是否使用非虚拟基析构函数错误地删除了类
- 类析构函数错误
- 析构函数错误
- C++动态数组析构函数错误
- c++中对析构函数错误的未定义引用
- 字符数组的析构函数错误
- C++复制构造函数、析构函数错误等
- 无法退出,因为析构函数错误导致main()在退出时停止执行
- 映射析构函数错误
- c++析构函数错误