标准 C++ 事务内存状态

Standard C++ transactional memory status

C++17 的事务内存提议的当前状态是什么。它是否会包含在标准中,旨在包含在标准 C++ 的某些未来版本中,或者只是一个实验性的概念验证功能,其标准化状态仍未确定?

我问是因为标准化委员会的一些文件在这里似乎给出了相互矛盾的信息。一方面,我们有 P0265R0 (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0265r0.pdf) saying that transactional memory is not going to be standardized, on the other hand - there's a N4492 paper by Stroustrup (http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4492.pdf),其事务内存列在 C++17 功能列表中。

很快:事务性内存 TS 已经发布,第二个版本正在开发中。但是,委员会不打算将其纳入标准中的 near 功能。选择这个有几个原因:

  • 实施经验不足。自 GCC6 以来,只有 g++ 实现了它。 TS的目标部分是收集实现和用户体验,所以这么大的功能在这方面还是太“不成熟”了。

  • 并不是每个目标都支持事务内存,它的实现成本很高,但并不是每个人都需要它。由于这些原因,委员会显然不确定 TS 是否应该成为主要 C++ 标准的一部分。还不如永远做个TS呢

  • 此外,并不是每个人都认为事务内存 TS 的每个特性都值得包含在主要的 C++ 标准中。一些人发现 synchronized 是主要特征,而另一些人则认为原子块才是真正的游戏规则改变者。 TS 确实 增加了库实现者必须处理的另一个认知开销(以及几个新的关键字,这通常被认为不是一件好事)。