C++11 引入的 std::thread 解决了"有没有"的问题,但留下了两个设计缺陷:析构时如果没 join 也没 detach 就直接 std::terminate(),以及无法从外部优雅地请求线程停止。C++20 引入了一系列新设施来弥补这些缺陷——std::jthread 的 RAII 线程管理、stop_token 的协作取消机制,以及 latch、barrier、counting_semaphore 等更高层的同步原语。
2026/5/6大约 5 分钟
C++11 引入的 std::thread 解决了"有没有"的问题,但留下了两个设计缺陷:析构时如果没 join 也没 detach 就直接 std::terminate(),以及无法从外部优雅地请求线程停止。C++20 引入了一系列新设施来弥补这些缺陷——std::jthread 的 RAII 线程管理、stop_token 的协作取消机制,以及 latch、barrier、counting_semaphore 等更高层的同步原语。