80x86上的原子位域操作?

时间:2009-11-17 10:59:31

标签: assembly atomic bit operation x86

80x86是否有原子测试和设置单词的各个位的指令?

1 个答案:

答案 0 :(得分:7)

如果您的意思是测试并将某个位修改为单个原子操作,则可以使用LOCK前缀将位测试指令(BT,BTS,BTR和BTC)全部设为原子。

如果您的意思是原子地测试一点,然后将原子位设置为单独的操作,则可以使用标准原子读取来测试该位,并且可以使用LOCK OR,LOCK AND,LOCK XOR指令来修改该位。

如果你需要更复杂的东西,例如测试一位然后设置一个不同的位,你将不得不在重试循环中使用标准的比较和交换CMPXCHG指令。