80x86是否有原子测试和设置单词的各个位的指令?
答案 0 :(得分:7)
如果您的意思是测试并将某个位修改为单个原子操作,则可以使用LOCK前缀将位测试指令(BT,BTS,BTR和BTC)全部设为原子。
如果您的意思是原子地测试一点,然后将原子位设置为单独的操作,则可以使用标准原子读取来测试该位,并且可以使用LOCK OR,LOCK AND,LOCK XOR指令来修改该位。
如果你需要更复杂的东西,例如测试一位然后设置一个不同的位,你将不得不在重试循环中使用标准的比较和交换CMPXCHG指令。