lichao
2021-05-06 9eb924f64a56918536d310dd89698aa7e148c727
src/robust.h
@@ -312,9 +312,10 @@
      size_type i = 0;
      do {
         auto pos = tail();
         if (tail_.compare_exchange_strong(pos, Next(pos))) {
         auto cur = buf[pos].load();
         r = Empty(cur) && buf[pos].compare_exchange_strong(cur, Enc(d));
         tail_.compare_exchange_strong(pos, Next(pos));
         }
      } while (try_more && !r && ++i < capacity);
      return r;
   }
@@ -325,9 +326,10 @@
      size_type i = 0;
      do {
         auto pos = head();
         if (head_.compare_exchange_strong(pos, Next(pos))) {
         cur = buf[pos].load();
         r = !Empty(cur) && buf[pos].compare_exchange_strong(cur, 0);
         head_.compare_exchange_strong(pos, Next(pos));
         }
      } while (try_more && !r && ++i < capacity);
      if (r) { d = Dec(cur); }
      return r;