MCPcopy Create free account
hub / github.com/apache/impala / Dequeue

Method Dequeue

be/src/util/internal-queue.h:132–150  ·  view source on GitHub ↗

Dequeues an element from the queue's head. Returns nullptr if the queue is empty. This is O(1).

Source from the content-addressed store, hash-verified

130 /// Dequeues an element from the queue's head. Returns nullptr if the queue
131 /// is empty. This is O(1).
132 T* Dequeue() {
133 Node* result = nullptr;
134 {
135 std::lock_guard<LockType> lock(lock_);
136 if (IsEmptyLocked()) return nullptr;
137 --size_;
138 result = head_;
139 head_ = head_->next;
140 if (head_ == nullptr) {
141 tail_ = nullptr;
142 } else {
143 head_->prev = nullptr;
144 }
145 }
146 DCHECK(result != nullptr);
147 result->next = result->prev = nullptr;
148 result->parent_queue = nullptr;
149 return reinterpret_cast<T*>(result);
150 }
151
152 /// Dequeues an element from the queue's tail. Returns nullptr if the queue
153 /// is empty. This is O(1).

Callers 2

TESTFunction · 0.45
ConsumerThreadFunction · 0.45

Calls

no outgoing calls

Tested by 2

TESTFunction · 0.36
ConsumerThreadFunction · 0.36