1
0
mirror of https://github.com/charlienet/go-mixed.git synced 2025-07-18 08:32:40 +08:00
This commit is contained in:
2022-05-05 00:24:28 +08:00
parent d59666d9e6
commit d0e055016b
3 changed files with 57 additions and 6 deletions

42
collections/rw_queue.go Normal file
View File

@ -0,0 +1,42 @@
package collections
import "sync"
type rw_queue[T any] struct {
q Queue[T]
mu sync.Mutex
}
func (q *rw_queue[T]) Push(v T) {
q.mu.Lock()
q.q.Put(v)
q.mu.Unlock()
}
func (q *rw_queue[T]) Pop() T {
q.mu.Lock()
defer q.mu.Unlock()
return q.q.Poll()
}
func (q *rw_queue[T]) Peek() T {
q.mu.Lock()
defer q.mu.Unlock()
return q.q.Peek()
}
func (q *rw_queue[T]) Size() int {
q.mu.Lock()
defer q.mu.Unlock()
return q.q.Size()
}
func (q *rw_queue[T]) IsEmpty() bool {
q.mu.Lock()
defer q.mu.Unlock()
return q.q.IsEmpty()
}