#include<iostream>
#include <thread>
#include <unistd.h>
#include <functional>
class Test
{
public:
Test(int m):n(m)
{
testThread_ = std::thread(std::bind(&Test::print,this));
}
void print(void)
{
std::cout<<n<<std::endl;
}
public:
int n;
std::thread testThread_;
};
int main(int argc,char **argv)
{
Test test(8);
test.testThread_.join();
/*
* 如果不加test.testThread_.join(); 会有terminate called without an active exception
* 原因是主线程在任务线程还没有执行完成就退出了,销毁了一些资源,导致任务线程就异常了。
*/
return 0;
}
$ g++ stdthread_class.cpp -lpthread -std=c++11 -o test
$ ./test.exe
8