spsc-queue: unrelacy
[model-checker-benchmarks.git] / spsc-queue / eventcount.h
index 226603e7b9b3555ddbd7e436fdb7611d555736b6..f64946a556138500880f12684e0321802accf86f 100644 (file)
@@ -1,3 +1,5 @@
+#include <unrelacy.h>
+
 class eventcount
 {
 public:
@@ -8,33 +10,33 @@ public:
 
        void signal_relaxed()
        {
-               unsigned cmp = count($).load(std::memory_order_relaxed);
+               unsigned cmp = count.load(std::memory_order_relaxed);
                signal_impl(cmp);
        }
 
        void signal()
        {
-               unsigned cmp = count($).fetch_add(0, std::memory_order_seq_cst);
+               unsigned cmp = count.fetch_add(0, std::memory_order_seq_cst);
                signal_impl(cmp);
        }
 
        unsigned get()
        {
-               unsigned cmp = count($).fetch_or(0x80000000,
+               unsigned cmp = count.fetch_or(0x80000000,
 std::memory_order_seq_cst);
                return cmp & 0x7FFFFFFF;
        }
 
        void wait(unsigned cmp)
        {
-               unsigned ec = count($).load(std::memory_order_seq_cst);
+               unsigned ec = count.load(std::memory_order_seq_cst);
                if (cmp == (ec & 0x7FFFFFFF))
                {
                        guard.lock($);
-                       ec = count($).load(std::memory_order_seq_cst);
+                       ec = count.load(std::memory_order_seq_cst);
                        if (cmp == (ec & 0x7FFFFFFF))
                        {
-                               waiters($) += 1;
+                               waiters += 1;
                                cv.wait(guard, $);
                        }
                        guard.unlock($);
@@ -52,10 +54,10 @@ private:
                if (cmp & 0x80000000)
                {
                        guard.lock($);
-                       while (false == count($).compare_swap(cmp,
+                       while (false == count.compare_swap(cmp,
                                (cmp + 1) & 0x7FFFFFFF, std::memory_order_relaxed));
                        unsigned w = waiters($);
-                       waiters($) = 0;
+                       waiters = 0;
                        guard.unlock($);
                        if (w)
                                cv.notify_all($);