Bootstrap

C++多线程----thread线程


C++11 新标准中加入了多线程库,其头文件为#include < thread>,其中主要包括std::thread类。

std::thread类的实现

C++11中管理线程的函数和类在头文件#include< thread>,其中包括std::thread类,最简单的是函数没有参数,仅传递名创建线程:

std::thread th1(proc1);//创建了一个名为th1的线程,并且线程th1开始执行。

实例化std::thread类对象时,如果函数为有参函数, 如"void proc2(int a,int b)",那么实例化std::thread类对象时,则需要传递更多参数,参数顺序依次为函数名、该函数的第一个参数、该函数的第二个参数,···,如"std::thread th2(proc2, a, b);":

std::thread th2(proc2, a, b);//创建了一个名为th2的线程,并且线程th2开始执行。

实例化std::thread类对象时,如果函数需要返回参数,可以用指针实现, 如"void proc3(int a,int &b)",如下

std::thread th2(proc2, a, std::ref(b));//创建了一个名为th2的线程,并且线程th2开始执行。

案例代码:

// 线程案例
#include <iostream>       
#include <thread>       

void sub_function1()
{
   
    for (int i = 0; i != 10; ++i)
    {
   
        std::cout << "thread 1 print " << i << std::endl;
    }
}

void sub_function2(int n)
{
   
    std::cout << "thread 2 print " << n <&l
;