diff --git a/cmd/main.go b/cmd/main.go index f1634dc..fa38d2d 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -30,20 +30,37 @@ func main() { //wait.Add(1) // //times := 100 + //counter := atomic.Int32{} + //counter.Store(int32(times)) // - //q := collect.NewDelayQueue(func(data int, now time.Time) { - // fmt.Println(data, now) - // if data == times-1 { + //q := collect.NewDelayQueue(func(data func(time.Time), now time.Time) { + // // fmt.Println(data, now) + // data(now) + // counter.Add(-1) + // if int(counter.Load()) <= 0 { // wait.Done() // } + // + // if counter.Load() == 62 { + // panic("test error!!!") + // } //}) //for i := 0; i < times; i++ { - // key := q.Add(time.Second*time.Duration(i), i) + // key := q.Add(time.Second*time.Duration(i), func(idx int) func(t time.Time) { + // return func(t time.Time) { + // fmt.Println("handler:", idx, t) + // } + // }(i)) // if i%5 == 0 { // go func(k int64, idx int) { // <-time.After(time.Second * 3) // q.Cancel(k) // fmt.Println("cancel", idx, k) + // + // counter.Add(-1) + // if int(counter.Load()) <= 0 { + // wait.Done() + // } // }(key, i) // } //} diff --git a/data/config.toml b/data/config.toml index 2f1213e..789f2e0 100644 --- a/data/config.toml +++ b/data/config.toml @@ -23,5 +23,10 @@ dbPath = "data/texas-poker.db" [game] # 新用户赠送筹码 -GiftChip = 10000 -AvatarPath = "data/avatar/" +giftChip = 10000 +avatarPath = "data/avatar/" + +[game.offline] # 玩家掉线配置 +# 在房间中 +outRoom = 15 + diff --git a/tool/collect/delay_queue.go b/tool/collect/delay_queue.go index 74a0e6e..dbd0a00 100644 --- a/tool/collect/delay_queue.go +++ b/tool/collect/delay_queue.go @@ -1,7 +1,9 @@ package collect import ( + "fmt" "github.com/emirpasic/gods/maps/treemap" + "runtime/debug" "sync" "sync/atomic" "time" @@ -36,7 +38,16 @@ func NewDelayQueue[T any](handler func(data T, now time.Time)) *DelayQueue[T] { continue } for _, data := range values { - q.handler(data, time.Now()) + func() { + defer func() { + if err := recover(); err != nil { + fmt.Printf("consumer handler error: %v \n", err) + // 输出堆栈信息 + fmt.Println(string(debug.Stack())) + } + }() + q.handler(data, time.Now()) + }() } } }()