From 0f6c8d932938d5c5bf6bb0a37560aee7319203bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=98=94=E5=BF=B5?= <1@72wo.cn> Date: Tue, 5 Aug 2025 17:33:38 +0800 Subject: [PATCH] =?UTF-8?q?refactor(sqrt=5Ftest):=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=B5=8B=E8=AF=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改了事件订阅和发布机制,增加了任务完成的判断和处理 - 优化了代码结构,提高了可读性和可维护性 - 移除了不必要的 --- common/utils/sqrt_test.go | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/common/utils/sqrt_test.go b/common/utils/sqrt_test.go index b95da4092..315b33a16 100644 --- a/common/utils/sqrt_test.go +++ b/common/utils/sqrt_test.go @@ -94,11 +94,16 @@ func BenchmarkFastSqrtInt(b *testing.B) { func Test_event(b *testing.T) { - tt := make(map[int]*bus.Listener[*Task], 3) topic := bus.NewTopic[*Task]() //直接注册到用户 for i := 0; i < 1; i++ { - t := topic.Sub(func(v *Task) { //注册里程碑 - fmt.Println(v.id) + isdone := false + t := topic.Sub(func(v *Task) { //用户初始化时注册里程碑 + if v.done { //如果任务完成 + isdone = true + fmt.Println(v.id, "任务完成") + return + } + if v.cfunc != nil { v.cont = v.cfunc(v.cont) //增加计数 } @@ -106,25 +111,27 @@ func Test_event(b *testing.T) { if v.cont > 0 { //如果计数达到,标记任务完成 v.done = true } - fmt.Println("当前任务计数", v.cont, "是否完成", v.done) - }) - tt[i] = t - } - topic.Pub(&Task{id: 1, cfunc: func(t uint32) uint32 { //满足任务1后推定 + fmt.Println(v.id, "当前任务计数", v.cont, "是否完成", v.done) - fmt.Println("当前任务计数", t) + }) + if isdone { //如果任务完成,取消注册 + t.Cancel() + } + + } + task1 := &Task{id: 1, cfunc: func(t uint32) uint32 { //满足任务1后推定 + + fmt.Println(1, "当前任务计数", t) //实现自定义逻辑 //增加用户计数 //增加服务器总计数 return t + 1 - }}) + }} + topic.Pub(task1) topic.Pub(&Task{id: 2, done: true}) - for _, v := range tt { - v.Cancel() - } - topic.Pub(&Task{id: 1}) //发送事件 + topic.Pub(task1) //发送事件 }