塔斯娱乐资讯网

C++面试·thread std::thread 是 C++11 提供的线程封装

C++面试·thread
std::thread 是 C++11 提供的线程封装类,用来创建和管理操作系统线程。它底层会调用平台相关的原生线程 API,例如 Linux 下通常基于 pthread。
它可以接收函数指针、Lambda、函数对象、成员函数等可调用对象。thread 对象创建后线程立即开始执行,并处于 joinable 状态。
在线程对象析构前,必须先调用 join() 或 detach(),使其变成非 joinable 状态,否则会调用 std::terminate()。
join():等待线程执行完成,调用 join() 的线程会阻塞。
detach():将线程与 thread 对象分离,线程独立运行,容易产生对象生命周期和悬空引用问题。
std::thread 不可拷贝,只能移动,因为一个线程资源不能被两个 thread 对象同时拥有。
std::thread 本身是 RAII 风格的线程资源封装,但不会在析构时自动 join;C++20 的 std::jthread 会在析构时自动请求停止并 join,使用起来更加安全。
编程 面试题 算法