函数
#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
下篇单例模式