std::jthread与std::thread的区别是什么?

为什么不是选择往std::thread添加新接口,而是引入了一个新的标准库?
关注者
72
被浏览
53,597
登录后你可以
不限量看优质回答 私信答主深度交流 精彩内容一键收藏

谢邀,人在家里,刚起床。

std::jthread与std::thread的区别是什么?

据我所知,特性上,std::jthread相比std::thread主要增加了以下两个功能:

1.std::jthread对象被destruct时,会自动调用join,等待其所表示的执行流结束。

2.支持外部请求中止(通过get_stop_source、get_stop_token和request_stop)。

为什么不是选择往std::thread添加新接口,而是引入了一个新的标准库?

因为std::jthread为了实现上述新功能,带来了额外的性能开销(主要是多了一个成员变量)。而根据C++一直以来“不为不使用的功能付费”的设计哲学,他们自然就把这些新功能拆出来新做了一个类。