我的项目中有以下方法:
long compare( long* avar, long comp, long exc )
{
return __sync_val_compare_and_swap( avar, comp, exc );
}
但是,如果我想使用gcc版本(旧版本,例如3.4.3)编译我的项目,它不支持AtomicBuiltins解决问题的替代路径是什么?什么样的替代函数(__sync_val_compare_and_swap的替代)或我们可以使用的函数块而不是__sync_val_compare_and_swap?
答案 0 :(得分:2)
我唯一能看到的替代方案是你必须通过汇编程序实现这一点。我认为gcc的asm
扩展早于石器时代,所以你可能包含的任何编译器都会支持这个。
实现此特定功能并不困难,您可以轻松找到参考。但是,您必须为您关注的每个体系结构提供不同的实现。