多线程¶
- std::thread启动后需要调用join或者detch才能重新赋值,否则段错误
# 即使线程函数已经返回,std::thread 对象仍然保持着与已完成线程的关联。调用 join() 的作用是: > 清理资源:释放线程相关的系统资源 > 获取结果:获取线程的退出状态 > 解除关联:将 std::thread 对象标记为"不关联任何线程" # 如果线程已经启动 > 必须调用 join() 或 detach(),即使线程已经结束 > 线程结束 ≠ std::thread 对象可以安全重新赋值 > 使用 joinable() 检查是否需要调用 join() > 遵循 RAII 原则,确保线程在析构前被正确处理 # 可重新赋值的情况 > 线程已经 join()(已结束且已调用 join) > 线程已经 detach()(已分离) > 或者线程根本没有启动(默认构造)