()
| 37 | } |
| 38 | |
| 39 | func (q *queue) get() (resultTask, error) { |
| 40 | timer := time.NewTimer(1 * time.Second) |
| 41 | select { |
| 42 | case task := <-q.queue: |
| 43 | atomic.AddInt32(&q.size, -1) |
| 44 | return task, nil |
| 45 | case <-timer.C: |
| 46 | return resultTask{}, ErrTimeout |
| 47 | } |
| 48 | } |
| 49 | |
| 50 | func (q *queue) put(task resultTask) error { |
| 51 | if atomic.LoadInt32(&q.size) >= q.limit { |
no outgoing calls