我需要实现(伪代码)一种新型的compare& swap(a,b)(CAS)对象 (我们称之为新型CAS2)。
CAS和CAS2对象都支持返回的读操作 对象价值。
它们都支持比较和交换(a,b)操作,但是在CAS上 此操作返回true / false并将对象值更改为b if 它等于a,在CAS2上这个操作具有相同的效果,但是 它应该总是返回对象,而不是返回true / false 操作前的值。
例如:
如果CAS对象值为4, compare& swap(4,5)将返回true并将值更改为5,但是打开 CAS2对象,比较& swap(4,5)将返回4并且还会更改 值为5。 如果CAS对象值为4,那么compare& swap(5,6)将返回false 并且什么都不做,但在CAS2上比较& swap(5,6)将返回4 而且什么都不做。 CAS2对象应该只使用一个CAS对象来实现 实现应该是无等待和线性化的。
提前致谢!