fixed command line
[cdsspec-compiler.git] / benchmark / spsc-bugfix / queue-relacy.h
diff --git a/benchmark/spsc-bugfix/queue-relacy.h b/benchmark/spsc-bugfix/queue-relacy.h
deleted file mode 100644 (file)
index 7833576..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-#include "eventcount-relacy.h"
-
-template<typename T>
-class spsc_queue
-{
-public:
-       spsc_queue()
-       {
-               node* n = new node ();
-               head($) = n;
-               tail($) = n;
-       }
-
-       ~spsc_queue()
-       {
-               RL_ASSERT(head($) == tail($));
-               delete ((node*)head($));
-       }
-
-       void enqueue(T data)
-       {
-               node* n = new node (data);
-               head($)->next.store(n, std::memory_order_release);
-               head($) = n;
-               ec.signal();
-       }
-
-       T dequeue()
-       {
-               T data = try_dequeue();
-               while (0 == data)
-               {
-                       int cmp = ec.get();
-                       data = try_dequeue();
-                       if (data)
-                               break;
-                       ec.wait(cmp);
-                       data = try_dequeue();
-                       if (data)
-                               break;
-               }
-               return data;
-       }
-
-private:
-       struct node
-       {
-               std::atomic<node*> next;
-               rl::var<T> data;
-
-               node(T data = T())
-                       : data(data)
-               {
-                       next($) = 0;
-               }
-       };
-
-       rl::var<node*> head;
-       rl::var<node*> tail;
-
-       eventcount ec;
-
-       T try_dequeue()
-       {
-               node* t = tail($);
-               node* n = t->next.load(std::memory_order_acquire);
-               if (0 == n)
-                       return 0;
-               T data = n->data($);
-               delete (t);
-               tail($) = n;
-               return data;
-       }
-};