#include <iostream>
#include <thread>
using namespace std;
class MyClass
{
public:
//可调类型
void operator()() const
{
cout << "operator run" << endl;
}
private:
};
void printHello()
{
cout << "printHello run" << endl;
}
int main()
{
//(1)全局函数做线程入口函数
thread t1(printHello); //线程启动
//(2)用可调用类型构造,将带有函数调用符类型的实例传入 注意以下正确写法
thread t2(MyClass()); //错误写法 C++编译器会将其解析为函数声明 而不是类对象
thread t3((MyClass())); //正确写法1
thread t4{ MyClass() }; //正确写法2
//(3)lambda表达式做线程入口函数
auto m_lambda = []
{
cout << "lambda run" << endl;
};
thread t5(m_lambda);
t1.join(); //等待线程执行完
//t2.join();
t3.join();
t4.join();
t5.join();
return 0;
}
(一)C++线程创建和线程入口函数
最新推荐文章于 2024-06-21 18:36:06 发布