hazptr_obj* head_{nullptr};
hazptr_obj* tail_{nullptr};
int rcount_{0};
+ bool active_{true};
public:
hazptr_priv();
inline hazptr_priv::~hazptr_priv() {
DEBUG_PRINT(this);
+ DCHECK(active_);
+ active_ = false;
if (tail_) {
pushAllToDomain();
}
if (tail_) {
tail_->next_ = obj;
} else {
+ if (!active_) {
+ default_hazptr_domain().objRetire(obj);
+ return;
+ }
head_ = obj;
}
tail_ = obj;