consumer: make sure list is unlocked before queueing

This commit is contained in:
André Roth
2026-01-03 19:28:57 +01:00
parent 251d94a859
commit 274cbdab61

View File

@@ -70,19 +70,25 @@ func (list *List) consumer() {
task.wgTask.Done()
list.wg.Done()
unlocked := false
for _, t := range list.tasks {
if t.State == IDLE {
// check resources
blockingTasks := list.usedResources.UsedBy(t.resources)
if len(blockingTasks) == 0 {
list.usedResources.MarkInUse(t.resources, t)
// unlock list since queueing may block
list.Unlock()
unlocked = true
list.queue <- t
break
}
}
}
if !unlocked {
list.Unlock()
}
}
list.Unlock()
}()
case <-list.queueDone: