Thread

线程在 C++11 之后被引入到 C++ 语言中,包含在 中。

线程创建

std::thread t1; // t1 不是线程
std::thread t2(f1, n + 1); // 按值传递
std::thread t3(f2, std::ref(n)); // 按引用传递
std::thread t4(std::move(t3)); // t4 现在运行 f2() 。 t3 不再是线程

在多线程时,如果主线程先结束,子线程还未结束,这是就会报错,所以一般主线程会等待子线程的结束。

std::thread t;
t.join(); // 在当前线程阻塞,直到 this 线程回收

如果主线程不想等待子线程,可以将子线程分离,各做各的,但是当主线程结束时不会去回收子线程。

std::thread t;
t.detach(); // 允许线程从线程句柄中独立开

线程库还提供了很多方便的函数。

std::this_thread::get_id(); // 得到此线程的 ID
std::this_thread::sleep_for(std::chrono::milliseconds(30)); // 使此线程睡眠

最后更新于