这是一个用于说明我需要的最小代码。它不起作用,因为(正如编译时错误消息所说)at_thread_exit不是boost :: thread的成员。我知道与名称空间this_thread相关,我已经浏览了boost页面上的文档,但是无法遵循如何使用at_thread_exit。我还没有找到任何使用谷歌如何使用它的简单示例。
#include <boost/thread.hpp>
#include <iostream>
class A{
public:
void callme(){
int a = 1;
}
void runThread() {
boost::thread td(&A::callme,this);
td.at_thread_exit(&A::done,this);
td.join();
}
void done() {
std::cout << "I am done!!!\n";
}
};
int main(int argc, char **argv) {
A *a = new A();
a->runThread();
delete a;
return EXIT_SUCCESS;
}
答案 0 :(得分:2)
boost::thread td([this]{
callme();
done();
});
at_thread_exit
仅适用于同一个帖子;否则它将需要同步,并且当只有一些线程使用它时,这将使每个线程为它付费。