C++ 多线程

 

函数

#include <iostream>
#include <thread>
#include <unistd.h>
#include <cstdlib>
void Test1() {
    for (int i = 0; i < 5; ++i) {
        std::cout << "Test1" << std::endl;
        sleep(1);
    }
}

void Test2() {
    for (int i = 0; i < 10; ++i) {
        std::cout << "Test2" << std::endl;
        sleep(1);
    }
}

int main() {   
    // 实例化一个线程对象th1, 使用函数t1构造, 然后该线程就开始执行
    std::thread th1(Test1); 
    std::thread th2(Test2);
    // 必须join或detach, 等待子线程结束主进程才可以退出
    th1.join();
    th2.join();
    return 0;
}

无参数函数

void func() {
    for (int i = 0; i < 10; ++i) {
        std::cout << "func" << std::endl;
    }
}

std::thread t(func);
t.join();

含参数函数

void f(int i);

std::thread t(f, num);

类成员函数

若要使用成员函数, td::thread构造函数的第二个参数是实例的指针, 第三个参数就是成员函数的第一个参数

class Demo {
public:
    void do_lengthy_work(int);
};

Demo my_x;

int num(0);

std::thread t(&X::do_lengthy_work, &my_x, num);

同步

join

TODO

detach