C++11的标准库中封装了线程的类,因此可以跨平台的使用线程库:
#include <iostream>
#include <thread>
#include <chrono>
using namespace std;
void tFunc(int a, const char* str)
{
cout<<"thread func run, param a:"<<a<<" param str:"<<str<<endl;
this_thread::sleep_for(chrono::seconds(1)); //线程等待1秒
cout<<"thread func after wait 1s"<<endl;
}
int main(){
thread t1(tFunc, 1, "hello thread"); //启动线程t1
t1.join(); //等待线程t1运行完毕
cout<<"t1 join"<<endl;
return 0;
}
thread的构造函数是通过变长模板实现的,因此可以传递不同长度,不同类型的参数到线程函数tFunc,只要声明一致即可
运行程序输出:
thread func run, param a:1 param str:hello thread
thread func after wait 1s
thread t1 join
需要指出的是,如果构造thread时,如果需要向线程函数tFunc传递引用参数,则需要通过std::ref进行传参:
#include <iostr