()
| 108 | } |
| 109 | |
| 110 | func (q *BuildQueue) schedule() { |
| 111 | for { |
| 112 | q.lock.Lock() |
| 113 | if q.chann == 0 || q.pending.Len() == 0 { |
| 114 | q.scheduler = false |
| 115 | q.lock.Unlock() |
| 116 | return |
| 117 | } |
| 118 | |
| 119 | task, _ := q.pending.Remove(q.pending.Front()).(*BuildTask) |
| 120 | q.queue[task] = struct{}{} |
| 121 | task.startedAt = time.Now() |
| 122 | q.chann-- |
| 123 | q.lock.Unlock() |
| 124 | |
| 125 | go q.run(task) |
| 126 | } |
| 127 | } |
| 128 | |
| 129 | func (q *BuildQueue) run(task *BuildTask) { |
| 130 | var output BuildOutput |
no test coverage detected