123456789101112131415161718192021222324252627282930313233343536373839 |
- package concurrent
- import (
- "sync"
- "git.ali33.ru/fcg-xvii/go-tools/containers"
- )
- func NewQueue() *Queue {
- return &Queue{
- q: containers.NewQueue(),
- m: new(sync.RWMutex),
- }
- }
- type Queue struct {
- q *containers.Queue
- m *sync.RWMutex
- }
- func (s *Queue) Size() (size int) {
- s.m.RLock()
- size = s.q.Size()
- s.m.RUnlock()
- return
- }
- func (s *Queue) Push(val ...interface{}) {
- s.m.Lock()
- s.q.Push(val...)
- s.m.Unlock()
- }
- func (s *Queue) Pop() (val interface{}, check bool) {
- s.m.Lock()
- val, check = s.q.Pop()
- s.m.Unlock()
- return
- }
|