我不知道为什么这个函数需要“C”而不是“C ++”链接。
答案 0 :(得分:5)
这是由LWG issue 1479添加的,它正在解决关于C ++ 11的最后一刻评论。
此更改的基本原理是C语言兼容性(C11线程库在stdatomic.h中具有相同名称的函数atomic_thread_fence。)
据我所知,C和C ++原子库总是可以共存的计划:兼容性的其他示例是std :: atomic的C兼容类型别名,例如atomic_int
和C兼容性宏ATOMIC_VAR_INIT
答案 1 :(得分:0)
atomic_thread_fence
建立非原子和放松原子访问的内存同步排序
并发,特别是宽松内存并发,是一个众所周知的问题
微妙且容易出错的域,以及验证这种优化
非常感兴趣。 Ref1。
对于这样的事情被广泛使用CompCertTSO
CompCertTSO是一个编译器,它从ClightTSO生成x86汇编代码,ClightTSO是C编程语言的一个大子集,增强了用于线程管理和同步的并发原语,以及基于x86-TSO模型的TSO宽松内存模型。
因此,为了验证,优化和测试目的,这个功能需要具有" C"键。