struct node* address; //format <addr,flagBit1,flagBit2>
我想使用BTS来原子设置flagBit1
位。
修改
我想盲目地设置这一点而不关心它是否先前设置
我可以使用汇编代码按照Using bts assembly instruction with gcc compiler
中的建议完成此操作但是我可以使用哪种内在可以跨不同架构移植?
例如,gcc Atomic Builtins有__sync_fetch_and_or
。这是否与BTS具有相同的属性?
答案 0 :(得分:2)
对于某个位的盲设置,sync_fetch_and_or
或sync_or_and_fetch
似乎都同样好,结果被丢弃,编译器知道优化它。
在x86上,gcc不会使用bts
,而只会执行lock or
,这应该没问题。