From 1797badafc5050ce2d24d5381ebc07ff4be94f97 Mon Sep 17 00:00:00 2001 From: Oliver Kowalke Date: Sat, 19 Sep 2015 17:37:42 +0200 Subject: [PATCH] fix memory ordering for release-op (spinlock/mutex/recursive_mutex) --- src/detail/spinlock.cpp | 2 +- src/mutex.cpp | 2 +- src/recursive_mutex.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/detail/spinlock.cpp b/src/detail/spinlock.cpp index 178efbe2..7b94b03b 100644 --- a/src/detail/spinlock.cpp +++ b/src/detail/spinlock.cpp @@ -40,7 +40,7 @@ atomic_spinlock::lock() { void atomic_spinlock::unlock() noexcept { BOOST_ASSERT( atomic_spinlock_status::locked == state_); - state_ = atomic_spinlock_status::unlocked; + state_.store( atomic_spinlock_status::unlocked, std::memory_order_release); } }}} diff --git a/src/mutex.cpp b/src/mutex.cpp index 9bba3158..69a23a91 100644 --- a/src/mutex.cpp +++ b/src/mutex.cpp @@ -101,7 +101,7 @@ mutex::unlock() { } lk.unlock(); owner_ = nullptr; - state_ = mutex_status::unlocked; + state_.store( mutex_status::unlocked, std::memory_order_release); if ( nullptr != ctx) { context::active()->set_ready( ctx); diff --git a/src/recursive_mutex.cpp b/src/recursive_mutex.cpp index ce382864..a2faa09e 100644 --- a/src/recursive_mutex.cpp +++ b/src/recursive_mutex.cpp @@ -115,7 +115,7 @@ recursive_mutex::unlock() { } lk.unlock(); owner_ = nullptr; - state_ = mutex_status::unlocked; + state_.store( mutex_status::unlocked, std::memory_order_release); if ( nullptr != ctx) { context::active()->set_ready( ctx);