实例代码:
#include <iostream>
#include <vector>
#include <thread>
#include <memory>
using namespace std;
class A
{
public:
int m_i;
A(int a) :m_i(a) { cout << "[A::A(int a)构造函数执行]" << endl; }
A(const A&a) :m_i(a.m_i) { cout << "[A::A(const A)拷贝构造函数执行]" << endl; }
~A(){ cout << "[A::~A()析构函数执行]" << endl; }
void thread_work(int num)
{
cout << "[子线程thread_work执行]" << this << "threadid = " << std::this_thread::get_id() << endl;
}
void operator()(int num)
{
cout << "[子线程()执行]" << this << "threadid = " << std::this_thread::get_id() << endl;
}
};
void myprint2(const int i, const A& pmybuf)
{
cout << &pmybuf << endl;
return;
}
void myprint3(const A& pmybuf)
{
cout << "子线程myprint3的参数地址是" << &pmybuf << "threadid = " << std::this_thread::get_id() << endl;
return;
}
void myprint4(unique_ptr<int> pzn)
{
return;
}
void myprint(const int &i, char* pmybuf)
{
cout << i << endl;
cout << pmybuf << endl;
return;
}
void myprint1(const int i, const string& pmybuf)
{
cout << i << endl;
cout << pmybuf.c_str() << endl;
return;
}
int main()
{
int mvar = 1;
int &mvary = mvar;
char mybuf[] = "this is a test!";
thread mytobj(myprint, mvar, mybuf);
int mysecondpar = 12;
mytobj.join();
cout << "I Love China!" << endl;
cout << "主线id是" << std::this_thread::get_id() << endl;
std::thread mytobj3(myprint3, mvar);
mytobj3.join();
A myobj11(10);
std::thread mytobj4(myprint3, std::ref(myobj11));
mytobj4.join();
unique_ptr<int> myp(new int(100));
A myobj33(10);
std::thread mytobj6(&A::thread_work, std::ref(myobj33), 15);
mytobj6.join();
system("pause");
}