c++11 std::threads创建多线程的三种方式

c++11  std::threads创建多线程的三种方式

在C++11 标准中,添加了很多的新特性,当用户在创建多线程程序时,可以有更多的选择。

创建线程的三种方式:

1.) 函数指针
2.) 函数类型
3.) Lambda 函数

1 函数指针

void foo1(int param1, int param2, int& param3){
    param3=param1+param2;
    std::cout<<"Method Function Pointer at thread number:\t"<
std::thread th1(foo1,1,2,std::ref(num_return1));

2 函数类

class func{
public:
    void operator()(int param1,int param2,int& param3)
    {
        param3=param1+param2;
        std::cout<<"Method Function Object  at thread number:\t"<

 

std::thread th2(func(),3,4,std::ref(num_return2));

3 lamda

详细的lamda表达式的介绍请看  微软官方英文文档

std::thread th3([](){
                std::cout<<"Method Lambda \t\t\tat thread number:\t"< 
  

 

完整代码

// 这个主要用来展示创建多线程函数
// Created by allen on 2020/6/24.
//


#include 
#include 

/***
 * 第一种方式:使用函数指针
 */
void foo1(int param1, int param2, int& param3){
    param3=param1+param2;
    std::cout<<"Method Function Pointer at thread number:\t"<

 

函数执行输出:

/home/allen/CLionProjects/ThreeWay-MulthThreadDemo/cmake-build-debug/ThreeWay_MulthThreadDemo
Method Function Pointer at thread number:    139648041760512
Method Function Object  at thread number:    139648041760512
Method Lambda              at thread number:    139648041760512
Method Function Pointer return     3
Method Function Object  return     7

Process finished with exit code 0
 

如果使用Cmake编译程序,请参考这篇文章:

Cmake编译pthreads报错:undefined reference to pthread_create

你可能感兴趣的:(c++11 std::threads创建多线程的三种方式)