We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent acfadfb commit ea3d6edCopy full SHA for ea3d6ed
queue/queue.go
@@ -83,6 +83,23 @@ func (q *Queue[T]) Dequeue() (val T, ok bool) {
83
return item, true
84
}
85
86
+// TryDequeue removes an item from the front of the queue, similar to Dequeue.
87
+//
88
+// However, TryDequeue does NOT block if the queue is empty. It returns second value as false immediately if the queue is empty or closed.
89
+func (q *Queue[T]) TryDequeue() (val T, ok bool) {
90
+ q.mu.Lock()
91
+ defer q.mu.Unlock()
92
+
93
+ if q.isClosed || len(q.items) == 0 {
94
+ return val, false
95
+ }
96
97
+ item := q.items[0]
98
+ q.items = q.items[1:]
99
100
+ return item, true
101
+}
102
103
// IsEmpty returns true if the queue is empty.
104
func (q *Queue[T]) IsEmpty() bool {
105
q.mu.RLock()
0 commit comments