refactor(sqrt_test): 重构事件测试逻辑
- 修改了事件订阅和发布机制,增加了任务完成的判断和处理 - 优化了代码结构,提高了可读性和可维护性 - 移除了不必要的
This commit is contained in:
@@ -94,11 +94,16 @@ func BenchmarkFastSqrtInt(b *testing.B) {
|
|||||||
|
|
||||||
func Test_event(b *testing.T) {
|
func Test_event(b *testing.T) {
|
||||||
|
|
||||||
tt := make(map[int]*bus.Listener[*Task], 3)
|
|
||||||
topic := bus.NewTopic[*Task]() //直接注册到用户
|
topic := bus.NewTopic[*Task]() //直接注册到用户
|
||||||
for i := 0; i < 1; i++ {
|
for i := 0; i < 1; i++ {
|
||||||
t := topic.Sub(func(v *Task) { //注册里程碑
|
isdone := false
|
||||||
fmt.Println(v.id)
|
t := topic.Sub(func(v *Task) { //用户初始化时注册里程碑
|
||||||
|
if v.done { //如果任务完成
|
||||||
|
isdone = true
|
||||||
|
fmt.Println(v.id, "任务完成")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if v.cfunc != nil {
|
if v.cfunc != nil {
|
||||||
v.cont = v.cfunc(v.cont) //增加计数
|
v.cont = v.cfunc(v.cont) //增加计数
|
||||||
}
|
}
|
||||||
@@ -106,25 +111,27 @@ func Test_event(b *testing.T) {
|
|||||||
if v.cont > 0 { //如果计数达到,标记任务完成
|
if v.cont > 0 { //如果计数达到,标记任务完成
|
||||||
v.done = true
|
v.done = true
|
||||||
}
|
}
|
||||||
fmt.Println("当前任务计数", v.cont, "是否完成", v.done)
|
fmt.Println(v.id, "当前任务计数", v.cont, "是否完成", v.done)
|
||||||
})
|
|
||||||
tt[i] = t
|
|
||||||
}
|
|
||||||
topic.Pub(&Task{id: 1, cfunc: func(t uint32) uint32 { //满足任务1后推定
|
|
||||||
|
|
||||||
fmt.Println("当前任务计数", t)
|
})
|
||||||
|
if isdone { //如果任务完成,取消注册
|
||||||
|
t.Cancel()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
task1 := &Task{id: 1, cfunc: func(t uint32) uint32 { //满足任务1后推定
|
||||||
|
|
||||||
|
fmt.Println(1, "当前任务计数", t)
|
||||||
//实现自定义逻辑
|
//实现自定义逻辑
|
||||||
//增加用户计数
|
//增加用户计数
|
||||||
//增加服务器总计数
|
//增加服务器总计数
|
||||||
return t + 1
|
return t + 1
|
||||||
|
|
||||||
}})
|
}}
|
||||||
|
topic.Pub(task1)
|
||||||
topic.Pub(&Task{id: 2, done: true})
|
topic.Pub(&Task{id: 2, done: true})
|
||||||
for _, v := range tt {
|
|
||||||
|
|
||||||
v.Cancel()
|
topic.Pub(task1) //发送事件
|
||||||
}
|
|
||||||
topic.Pub(&Task{id: 1}) //发送事件
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user