From 03fe0f02815be5754a2b95a168c35c0f29f49c51 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 25 Feb 2017 11:13:42 +0100 Subject: Reduce memory cleanup overhead --- raul/Maid.hpp | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) (limited to 'raul/Maid.hpp') diff --git a/raul/Maid.hpp b/raul/Maid.hpp index 7f5a299..29b6473 100644 --- a/raul/Maid.hpp +++ b/raul/Maid.hpp @@ -102,13 +102,8 @@ public: */ inline void cleanup() { // Atomically get the head of the disposed list - Disposable* disposed; - do { - disposed = _disposed.load(std::memory_order_relaxed); - } while (!_disposed.compare_exchange_weak( - disposed, nullptr, - std::memory_order_acquire, - std::memory_order_relaxed)); + Disposable* const disposed = _disposed.exchange( + nullptr, std::memory_order_acquire); // Free the disposed list for (Disposable* obj = disposed; obj;) { -- cgit v1.2.1