From: qydysky <32743305+qydysky@users.noreply.github.com> Date: Sun, 12 Mar 2023 08:48:52 +0000 (+0800) Subject: fix X-Git-Tag: v0.24.1~1 X-Git-Url: http://127.0.0.1:8081/?a=commitdiff_plain;h=648df8ae312b626f996ff0eb407331243240fe93;p=part%2F.git fix --- diff --git a/msgq/Msgq.go b/msgq/Msgq.go index b8bf6a7..6821f1c 100644 --- a/msgq/Msgq.go +++ b/msgq/Msgq.go @@ -97,33 +97,37 @@ func (m *Msgq) Pull_tag(func_map map[string]func(any) (disable bool)) { } func (m *Msgq) Pull_tag_async_only(key string, f func(any) (disable bool)) { - var disable = false + var disable = signal.Init() m.Register_front(func(data any) bool { - if disable { + if !disable.Islive() { return true } if d, ok := data.(Msgq_tag_data); ok && d.Tag == key { - go func(t *bool) { - *t = f(d.Data) - }(&disable) + go func() { + if f(d.Data) { + disable.Done() + } + }() } return false }) } func (m *Msgq) Pull_tag_async(func_map map[string]func(any) (disable bool)) { - var disable = false + var disable = signal.Init() m.Register_front(func(data any) bool { - if disable { + if !disable.Islive() { return true } if d, ok := data.(Msgq_tag_data); ok { if f, ok := func_map[d.Tag]; ok { - go func(t *bool) { - *t = f(d.Data) - }(&disable) + go func() { + if f(d.Data) { + disable.Done() + } + }() } } return false @@ -186,17 +190,19 @@ func (m *MsgType[T]) Pull_tag_async_only(key string, f func(T) (disable bool)) { } func (m *MsgType[T]) Pull_tag_async(func_map map[string]func(T) (disable bool)) { - var disable = false + var disable = signal.Init() m.m.Register_front(func(data any) bool { - if disable { + if !disable.Islive() { return true } if d, ok := data.(Msgq_tag_data); ok { if f, ok := func_map[d.Tag]; ok { - go func(t *bool) { - *t = f(d.Data.(T)) - }(&disable) + go func() { + if f(d.Data.(T)) { + disable.Done() + } + }() } } return false diff --git a/msgq/Msgq_test.go b/msgq/Msgq_test.go index 4b2c3f4..de4ad2a 100644 --- a/msgq/Msgq_test.go +++ b/msgq/Msgq_test.go @@ -1,7 +1,6 @@ package part import ( - "fmt" _ "net/http/pprof" "testing" "time" @@ -374,29 +373,24 @@ func Test_msgq7(t *testing.T) { } func Test_msgq8(t *testing.T) { - var c = make(chan string, 100) - var cc string msg := NewType[int]() msg.Pull_tag_async_only(`1`, func(i int) (disable bool) { - time.Sleep(time.Second) - c <- fmt.Sprintf("a%d", i) + if i > 4 { + t.Fatal(i) + } return i > 3 }) msg.Pull_tag_only(`1`, func(i int) (disable bool) { - time.Sleep(time.Second) - c <- fmt.Sprintf("s%d", i) + if i > 6 { + t.Fatal(i) + } return i > 5 }) for i := 0; i < 20; i++ { msg.Push_tag(`1`, i) + time.Sleep(time.Millisecond * 20) } time.Sleep(time.Second) - for len(c) != 0 { - cc += <-c - } - if cc != "a0s0a1s1a2s2a3s3a4s4s5s6" { - t.Fatal() - } } // func Test_msgq6(t *testing.T) {