Мне нужно реализовать (псевдокод) новый тип сравнения & объект swap (a, b) (CAS) (назовем новый тип CAS2).Как реализовать новый вид команды compare & swap
Объекты CAS и CAS2 поддерживают операцию чтения, которая возвращает значение объекта .
Они оба поддерживают сравнить & своп (а, б) операцию, но в то время как на CAS эта операция возврата истина/ложь и изменяет значение объекта б, если она равна а, на CAS2 эта операция имеет тот же эффект, но вместо того, чтобы возвращать true/false, он должен всегда возвращать объект значение до операции.
Например:
Если значение объекта CAS-4, сравнить & своп (4,5) будет возвращать истинным и изменить значение до 5, а на объекта CAS2, сравните & своп (4, 5) вернет 4, а также изменит значение на 5. Если значение объекта CAS равно 4, сравните & swap (5,6) вернет false и ничего не будет делать, но на CAS2 сравните & swap (5,6) вернет 4 , а также ничего не сделает. Объект CAS2 должен быть реализован с использованием только одного объекта CAS и реализация должна быть безжизненной и линеаризуемой.
Заранее благодарен!