struct node* address; //format <addr,flagBit1,flagBit2>
我想使用BTS来原子地设置flagBit1
位。
编辑
我想盲目地设置这个位,而不关心它是否是以前设置的
我可以使用汇编代码来完成这项工作,如在使用gcc编译器的bts汇编指令中所建议的那样
但是,有没有一种内在的东西可以在不同的体系结构中使用?
例如,gcc Atomic Builtins具有__sync_fetch_and_or
。这和BTS有相同的属性吗?
对于一个位的盲设置,sync_fetch_and_or
或sync_or_and_fetch
似乎都一样好,结果被丢弃,编译器知道要优化它。在x86上,gcc不会使用bts
,而是简单地执行lock or
,这应该很好。