From: qydysky Date: Sat, 8 Apr 2023 13:20:53 +0000 (+0800) Subject: update X-Git-Tag: v0.24.6 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=1ac2f12baf1dff637f61197f204c7252b33f62e7;p=part%2F.git update --- diff --git a/funcCtrl/FuncCtrl.go b/funcCtrl/FuncCtrl.go index 7648c45..53c68c8 100644 --- a/funcCtrl/FuncCtrl.go +++ b/funcCtrl/FuncCtrl.go @@ -24,16 +24,13 @@ func (t *SkipFunc) UnSet() { // 新的替换旧的 type FlashFunc struct { b atomic.Uintptr + l sync.Mutex c *context.CancelFunc } func (t *FlashFunc) Flash() (current uintptr) { current = uintptr(unsafe.Pointer(&struct{}{})) t.b.Store(current) - if t.c != nil { - (*t.c)() - t.c = nil - } return } @@ -43,9 +40,10 @@ func (t *FlashFunc) NeedExit(current uintptr) bool { return t.b.Load() != current } -func (t *FlashFunc) FlashWithContext() (current uintptr, c context.Context) { - current = uintptr(unsafe.Pointer(&struct{}{})) - t.b.Store(current) +func (t *FlashFunc) FlashWithContext() (c context.Context) { + t.l.Lock() + defer t.l.Unlock() + if t.c != nil { (*t.c)() t.c = nil diff --git a/funcCtrl/FuncCtrl_test.go b/funcCtrl/FuncCtrl_test.go index 6d7a4f5..eb7d425 100644 --- a/funcCtrl/FuncCtrl_test.go +++ b/funcCtrl/FuncCtrl_test.go @@ -48,7 +48,7 @@ func Test_FlashFunc2(t *testing.T) { var cc = make(chan int, 2) var b FlashFunc var a = func(i int) { - _, c := b.FlashWithContext() + c := b.FlashWithContext() <-c.Done() cc <- i }