该技能用于系统掌握 C++ 并发与并行编程,从 C++11 线程延伸到 C++20 协程与并行算法。
用途:编写和管理多线程程序,处理数据竞争、死锁、可见性等并发问题,并提升并行性能。
主要能力:
- 线程基础:std::thread 创建与 join/detach、thread_local 线程局部存储、C++20 std::jthread 与 std::stop_token 取消机制、RAII 线程封装。
- 同步原语:std::mutex、std::shared_mutex 与 lock_guard、unique_lock、scoped_lock、shared_lock;条件变量实现线程安全队列;C++20 的 counting_semaphore、latch、barrier。
- 原子操作:atomic 类型读写、fetch_add、compare_exchange_strong/weak,以及 relaxed、acquire、release、acq_rel、seq_cst 内存序。
- 异步编程:std::async 与 future、promise/future、packaged_task,launch 策略(async、deferred)。
- 并行算法:std::execution::par 与 par_unseq 下的 sort、transform、reduce、transform_reduce、for_each。
- 无锁编程:以 CAS 实现无锁栈,并提示 ABA 问题。
使用方式:在 C++ 项目中按需引入头文件 thread、mutex、shared_mutex、condition_variable、atomic、future、semaphore、latch、barrier、execution 等,按资料示例组织代码;可用 gtest 编写并发单元测试验证正确性。
适用场景:多线程服务、并行数据处理、线程安全容器、无锁数据结构、并发性能优化。
限制与注意事项:资料列出常见陷阱(数据竞争、死锁、活锁、优先级反转、伪共享、ABA)及排查决策树,建议使用 ThreadSanitizer、gdb 检查线程栈并注意锁顺序;无锁实现需谨慎处理内存回收。该技能具体运行方式、安装命令与收费信息暂未提供。