旧gcc编译器的__sync_val_compare_and_swap函数的替代方法

时间:2011-10-07 08:28:14

标签: c multithreading pthreads

我的项目中有以下方法:

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?

1 个答案:

答案 0 :(得分:2)

我唯一能看到的替代方案是你必须通过汇编程序实现这一点。我认为gcc的asm扩展早于石器时代,所以你可能包含的任何编译器都会支持这个。

实现此特定功能并不困难,您可以轻松找到参考。但是,您必须为您关注的每个体系结构提供不同的实现。