From 8828bcaed6db52dcd6450e1e625af3c5f33038a4 Mon Sep 17 00:00:00 2001 From: dengsgo Date: Thu, 2 Jan 2020 18:32:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- taskman.go | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/taskman.go b/taskman.go index 9c919c3..a98508c 100644 --- a/taskman.go +++ b/taskman.go @@ -47,7 +47,7 @@ func newTaskMan(delay int, callUrl string) *TaskMan { func (t *TaskMan) Put(cf *changedFile) { if t.delay < 1 { - t.preRun(cf) + t.dispatcher(cf) return } t.putLock.Lock() @@ -58,20 +58,24 @@ func (t *TaskMan) Put(cf *changedFile) { if t.lastTaskId > cf.Changed { return } - if keyInInstruction(InstShouldFinish) { - t.waitQueue = append(t.waitQueue, cf) - if t.cmd == nil { - t.waitChan <- true - return - } - logInfo("Waitting for the last task to finish") - logInfo("Number of waiting tasks:", len(t.waitQueue)) - } else { - t.preRun(cf) - } + t.dispatcher(cf) }() } +func (t *TaskMan) dispatcher(cf *changedFile) { + if keyInInstruction(InstShouldFinish) { + t.waitQueue = append(t.waitQueue, cf) + if t.cmd == nil { + t.waitChan <- true + return + } + logInfo("Waitting for the last task to finish") + logInfo("Number of waiting tasks:", len(t.waitQueue)) + } else { + t.preRun(cf) + } +} + func (t *TaskMan) preRun(cf *changedFile) { if t.cmd != nil && t.cmd.Process != nil { if err := t.cmd.Process.Kill(); err != nil {