From 12a3b4265d72ed7769e0b9dea5f87ddc02dff20c Mon Sep 17 00:00:00 2001 From: gazebo Date: Wed, 2 Jan 2019 17:37:38 +0800 Subject: [PATCH] - fix concurrent access of TaskMan --- business/jxutils/tasksch/task_man.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/business/jxutils/tasksch/task_man.go b/business/jxutils/tasksch/task_man.go index fa3d7e42a..37def71b1 100644 --- a/business/jxutils/tasksch/task_man.go +++ b/business/jxutils/tasksch/task_man.go @@ -2,6 +2,7 @@ package tasksch import ( "sort" + "sync" "time" ) @@ -12,6 +13,7 @@ var ( type TaskMan struct { taskList map[string]ITask + locker sync.RWMutex } func init() { @@ -19,6 +21,8 @@ func init() { } func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours int) (taskList TaskList) { + m.locker.RLock() + defer m.locker.RUnlock() if lastHours == 0 { lastHours = defLastHours } @@ -34,6 +38,8 @@ func (m *TaskMan) GetTasks(taskID string, fromStatus, toStatus int, lastHours in } func (m *TaskMan) ManageTask(task ITask) ITask { + m.locker.Lock() + defer m.locker.Unlock() m.taskList[task.GetID()] = task return task }