C++ 创建一个std :: thread
示例
在C ++中,使用std :: thread类创建线程。线程是独立的执行流程;这类似于让助手同时执行另一任务。当线程中的所有代码执行完后,它终止。创建线程时,您需要传递一些要在其上执行的内容。您可以传递给线程的一些信息:
免费功能
会员职能
函子对象
Lambda表达式
自由函数示例-在单独的线程上执行函数(实时示例):
#include <iostream>#include <thread>
void foo(int a)
{
std::cout << a << '\n';
}
int main()
{
// 创建并执行线程
std::thread thread(foo, 10); // foo是要执行的函数,10是
// 传递给它的论点
//继续; 线程分别执行
//等待线程完成;我们待在这里直到完成
thread.join();
return 0;
}
成员函数示例-在单独的线程上执行成员函数(实时示例):
#include <iostream>#include <thread>
class Bar
{
public:
void foo(int a)
{
std::cout << a << '\n';
}
};
int main()
{
Bar bar;
// 创建并执行线程
std::thread thread(&Bar::foo, &bar, 10); // 将10传递给成员函数
// 成员函数将在单独的线程中执行
// 等待线程完成,这是一个阻塞操作
thread.join();
return 0;
}
Functor对象示例(实时示例):
#include <iostream>#include <thread>
class Bar
{
public:
void operator()(int a)
{
std::cout << a << '\n';
}
};
int main()
{
Bar bar;
// 创建并执行线程
std::thread thread(bar, 10); // 将10传递给仿函数对象
// functor对象将在单独的线程中执行
// 等待线程完成,这是一个阻塞操作
thread.join();
return 0;
}
Lambda表达式示例(实时示例):
#include <iostream>#include <thread>
int main()
{
auto lambda = [](int a) { std::cout << a << '\n'; };
// 创建并执行线程
std::thread thread(lambda, 10); // 将10传递给lambda表达式
// lambda表达式将在单独的线程中执行
// 等待线程完成,这是一个阻塞操作
thread.join();
return 0;
}
以上是 C++ 创建一个std :: thread 的全部内容, 来源链接: utcz.com/z/315720.html