Imported Upstream version 1.64.0
[platform/upstream/boost.git] / boost / fiber / detail / fss.hpp
index 54dc5b7..27a7d67 100644 (file)
@@ -38,12 +38,13 @@ public:
 
     friend inline
     void intrusive_ptr_add_ref( fss_cleanup_function * p) noexcept {
-        ++p->use_count_;
+        p->use_count_.fetch_add( 1, std::memory_order_relaxed);
     }
 
     friend inline
     void intrusive_ptr_release( fss_cleanup_function * p) noexcept {
-        if ( --p->use_count_ == 0) {
+        if ( 1 == p->use_count_.fetch_sub( 1, std::memory_order_release) ) {
+            std::atomic_thread_fence( std::memory_order_acquire);
             delete p;
         }
     }