共享数据与条件竞争
共享数据修改破坏不变量,引发恶性条件竞争,导致数据损坏和程序崩溃。互斥锁等机制可避免此类竞争,保证多线程安全。
共享数据修改破坏不变量,引发恶性条件竞争,导致数据损坏和程序崩溃。互斥锁等机制可避免此类竞争,保证多线程安全。
std::thread::id唯一标识线程,支持比较,可作为容器键,默认值表示无线程。
CPU逻辑核心数决定并发线程上限,超线程增加逻辑核数,合理线程数一般不超硬件线程数,避免资源竞争。
线程所有权通过移动语义转移,确保唯一管理,避免资源冲突和程序崩溃。
std::thread构造函数拷贝参数,引用需用std::ref,移动语义用std::move避免拷贝或悬空。
C++ 中线程启动后需调用 join() 等待其结束,或用 detach() 分离线程后台运行,否则析构时报错。避免线程访问已销毁局部变量。推荐用 RAII 自动管理线程生命周期。
介绍并发与并行概念、线程基本原理及 C++ 多线程支持演进,涵盖为何并发、何时使用,以及 std::thread 的简单示例。
了解何时生成拷贝/移动/析构函数及其相互影响,合理用 =default。
即使是 const 函数,读缓存也可能写成员,应加锁防止竞态。
constexpr 可在编译期求值,提升性能与安全性;用于函数、变量、构造函数都有效,推荐优先使用。