项目

一般

简介

多线程

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