Commit 914047bd authored by Max Katsev's avatar Max Katsev Committed by Facebook GitHub Bot

Add atomic_ref::exchange

Reviewed By: ot

Differential Revision: D33857528

fbshipit-source-id: 265457c5771684d6830a16a3b7390e9bd99b277d
parent 2b99b21b
...@@ -43,6 +43,11 @@ struct atomic_ref_base { ...@@ -43,6 +43,11 @@ struct atomic_ref_base {
return atomic().load(order); return atomic().load(order);
} }
T exchange(T desired, std::memory_order order = std::memory_order_seq_cst)
const noexcept {
return atomic().exchange(desired, order);
}
bool compare_exchange_weak( bool compare_exchange_weak(
T& expected, T& expected,
T desired, T desired,
......
...@@ -32,7 +32,8 @@ TEST_F(AtomicRefTest, integer) { ...@@ -32,7 +32,8 @@ TEST_F(AtomicRefTest, integer) {
auto ref = folly::make_atomic_ref(value); auto ref = folly::make_atomic_ref(value);
EXPECT_EQ(17, ref.load(std::memory_order_relaxed)); EXPECT_EQ(17, ref.load(std::memory_order_relaxed));
ref.store(55, std::memory_order_relaxed); ref.store(55, std::memory_order_relaxed);
EXPECT_EQ(55, ref.load(std::memory_order_relaxed)); EXPECT_EQ(55, ref.exchange(42, std::memory_order_relaxed));
EXPECT_EQ(42, ref.load(std::memory_order_relaxed));
} }
{ {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment