serialQueue.go 409 B

12345678910111213141516171819202122232425
  1. package util
  2. import "sync"
  3. type SerialQueue struct {
  4. items [][]byte
  5. lock sync.Mutex
  6. }
  7. func (q *SerialQueue) Enqueue(item []byte) {
  8. q.lock.Lock()
  9. defer q.lock.Unlock()
  10. q.items = append(q.items, item)
  11. }
  12. func (q *SerialQueue) Dequeue() ([]byte, bool) {
  13. q.lock.Lock()
  14. defer q.lock.Unlock()
  15. if len(q.items) == 0 {
  16. return nil, false
  17. }
  18. item := q.items[0]
  19. q.items = q.items[1:]
  20. return item, true
  21. }