Reorgs added benchmarks (put them in misc folder)
[libcds.git] / cds / sync / seqlock.h
diff --git a/cds/sync/seqlock.h b/cds/sync/seqlock.h
deleted file mode 100644 (file)
index 7427053..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-#ifndef _SEQLOCK_H
-#define _SEQLOCK_H
-
-#include "backoff.h"
-#include <atomic>
-
-namespace cds_others {
-
-using std::atomic_int;
-using std::memory_order_release;
-using std::memory_order_acquire;
-using std::memory_order_relaxed;
-
-class SeqLock {
-private:
-  // Sequence for reader consistency check.
-  atomic_int seq_;
-  // It needs to be atomic to avoid data races
-  atomic_int data_;
-
-public:
-  SeqLock() {
-    atomic_init(&seq_, 0);
-    atomic_init(&data_, 0);
-  }
-
-  int read() {
-    ExpBackoff backoff;
-    while (true) {
-      int old_seq = seq_.load(memory_order_acquire);
-      if (old_seq % 2 == 1) {
-        backoff();
-        continue;
-      }
-
-      int res = data_.load(memory_order_acquire);
-      if (seq_.load(memory_order_relaxed) == old_seq) {
-        return res;
-      }
-    }
-  }
-
-  void write(int new_data) {
-    ExpBackoff backoff;
-    while (true) {
-      // This might be a relaxed too
-      int old_seq = seq_.load(memory_order_acquire);
-      if (old_seq % 2 == 1) {
-        backoff();
-        continue; // Retry
-      }
-
-      // Should be relaxed!!!
-      if (seq_.compare_exchange_strong(old_seq, old_seq + 1,
-                                       memory_order_relaxed,
-                                       memory_order_relaxed)) {
-        break;
-      }
-    }
-
-    // Update the data
-    data_.store(new_data, memory_order_release); // release
-
-    seq_.fetch_add(1, memory_order_release); // release
-  }
-};
-
-} // namespace cds_others
-
-#endif