fix: delete done task

This commit is contained in:
krau
2025-02-27 22:25:10 +08:00
parent 7015081a84
commit 152f473131
4 changed files with 53 additions and 23 deletions

View File

@@ -17,10 +17,9 @@ type TaskQueue struct {
func (q *TaskQueue) AddTask(task *types.Task) {
q.mutex.Lock()
defer q.mutex.Unlock()
if task.Status == types.Pending {
q.list.PushBack(task)
q.cond.Signal()
} else {
q.list.PushBack(task)
q.cond.Signal()
if task.Status != types.Pending {
delete(q.activeMap, task.Key())
}
}
@@ -34,10 +33,18 @@ func (q *TaskQueue) GetTask() *types.Task {
e := q.list.Front()
task := e.Value.(*types.Task)
q.list.Remove(e)
q.activeMap[task.Key()] = task
if task.Status == types.Pending {
q.activeMap[task.Key()] = task
}
return task
}
func (q *TaskQueue) DoneTask(task *types.Task) {
q.mutex.Lock()
defer q.mutex.Unlock()
delete(q.activeMap, task.Key())
}
func (q *TaskQueue) CancelTask(key string) bool {
q.mutex.Lock()
defer q.mutex.Unlock()
@@ -97,3 +104,7 @@ func Len() int {
func CancelTask(key string) bool {
return Queue.CancelTask(key)
}
func DoneTask(task *types.Task) {
Queue.DoneTask(task)
}