我对 C++ 中 STM(软件事务内存)的最新技术有疑问。我在 cppreference 网站(transactional_memory)上读到这是一个实验性功能,但它也说该页面正在建设中,所以我的问题是:
标准现在是否支持此功能?(例如 c++17 或 c++20)
如果还没有,cppreference 页面会显示:
GCC 从 6.1 版开始支持此技术规范(需要 -fgnu-tm 才能启用)。自 4.7 起,GCC 支持此规范的旧变体。
较新的 GCC 版本是否也支持此功能?
我对 C++ 中 STM(软件事务内存)的最新技术有疑问。我在 cppreference 网站(transactional_memory)上读到这是一个实验性功能,但它也说该页面正在建设中,所以我的问题是:
标准现在是否支持此功能?(例如 c++17 或 c++20)
如果还没有,cppreference 页面会显示:
GCC 从 6.1 版开始支持此技术规范(需要 -fgnu-tm 才能启用)。自 4.7 起,GCC 支持此规范的旧变体。
较新的 GCC 版本是否也支持此功能?
标准中没有出现“STM”、“软件”和“事务”等短语(工作草案,N4849,2020-01-14)。所以我认为可以肯定地说它不受标准支持。
至于 GCC,man g++
对于 10.2.0 版来说:
-fgnu-tm
指定该选项时
-fgnu-tm
,编译器会为英特尔当前事务性内存 ABI 规范文档(修订版 1.1,2009 年 5 月 6 日)的 Linux 变体生成代码。这是一个实验性功能,随着官方规范的变化,它的接口可能会在未来版本的 GCC 中发生变化。请注意,并非所有架构都支持此功能。有关 GCC 对事务性内存的支持的更多信息,
请注意,非调用异常 (-fnon-call-exceptions) 不支持事务性内存功能。
第二段真的在句子中间结束。也许他们打算链接到TransactionalMemory 上的 GCC wiki 页面。
无论如何,从 4.7 版开始,似乎已经以某种形式提供了对 GCC 的支持。