Interlocked.Exchange,但不是布尔值?

时间:2020-03-05 18:41:27  来源:igfitidea点击:

是否有与" Interlocked.Exchange"等效的布尔值?

例如原子交换值,该值返回先前的值并且不需要锁?

解决方案

回答

不;使用整数而不是布尔值。

原则上可以这样写(cmpxchg,基础处理器指令,可以在x86上的8、16、32和64位操作数上运行,在x64上可以操作8、16、32、64和128位操作数),但实际上,大多数API都坚持使用指针和双指针(在x86上为32和64位,在x64上为64和128位)操作数,因为它们是我们真正需要的。