fix hy tls bug

fix task
This commit is contained in:
yuzuki999
2023-06-18 03:37:27 +08:00
parent 7ac6232639
commit c536c46703
7 changed files with 28 additions and 19 deletions

View File

@@ -24,20 +24,24 @@ func (t *Task) hasClosed() bool {
return !t.running
}
func (t *Task) checkedExecute() error {
func (t *Task) checkedExecute(first bool) error {
if t.hasClosed() {
return nil
}
t.access.Lock()
defer t.access.Unlock()
if first {
if err := t.Execute(); err != nil {
t.running = false
return err
}
}
if !t.running {
return nil
}
t.timer = time.AfterFunc(t.Interval, func() {
t.checkedExecute()
t.checkedExecute(true)
})
return nil
@@ -52,21 +56,12 @@ func (t *Task) Start(first bool) error {
}
t.running = true
t.access.Unlock()
if first {
if err := t.Execute(); err != nil {
t.access.Lock()
t.running = false
t.access.Unlock()
return err
}
}
if err := t.checkedExecute(); err != nil {
if err := t.checkedExecute(first); err != nil {
t.access.Lock()
t.running = false
t.access.Unlock()
return err
}
return nil
}

15
common/task/task_test.go Normal file
View File

@@ -0,0 +1,15 @@
package task
import (
"log"
"testing"
"time"
)
func TestTask(t *testing.T) {
ts := Task{Execute: func() error {
log.Println("q")
return nil
}, Interval: time.Second}
ts.Start(false)
}