🐋
Blog
C++
C++
  • C++
  • 基本语法
    • 冷门知识
    • 右值
    • lambda
  • 奇技淫巧
    • 算数上的问题
    • 图存储方式
    • 自定义排序函数
  • 多线程
    • Thread
    • Mutex & Atomic
    • Condition_variable & Semaphore
    • Promise & Future
由 GitBook 提供支持
在本页
  1. 多线程

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)); // 使此线程睡眠
上一页自定义排序函数下一页Mutex & Atomic

最后更新于2年前