89    size_t tail_sequence = _tail.load(std::memory_order_relaxed);
 
   93        Node* node = &_buffer[tail_sequence & _mask];
 
   94        size_t node_sequence = node->sequence.load(std::memory_order_acquire);
 
   97        int64_t diff = (int64_t)node_sequence - (int64_t)(tail_sequence + 1);
 
  104            if (_tail.compare_exchange_weak(tail_sequence, tail_sequence + 1, std::memory_order_relaxed))
 
  107                swap(record, node->value);
 
  110                node->sequence.store(tail_sequence + _mask + 1, std::memory_order_release);
 
  122            tail_sequence = _tail.load(std::memory_order_relaxed);