From 1bd5a7bed8212e7739fb996a9f4f56118f47c488 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期二, 31 十月 2023 17:57:26 +0800 Subject: [PATCH] fix dead lock --- middleware/refresh_user.go | 10 +++++++--- main.go | 2 +- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 4996087..e8f5027 100644 --- a/main.go +++ b/main.go @@ -50,7 +50,7 @@ middleware.InitUserConn() v1.InitCodeServiceConn() - middleware.InitRefreshUserManager(1, 5, 3600) + middleware.InitRefreshUserManager(2, 1, 120) middleware.RunRefreshUser() ///瀹氭椂瀵规椿璺冪敤鎴锋洿鏂扮敤鎴疯鎯� logx.Error(server.ListenAndServe().Error()) diff --git a/middleware/refresh_user.go b/middleware/refresh_user.go index c9b5b44..54ebd3e 100644 --- a/middleware/refresh_user.go +++ b/middleware/refresh_user.go @@ -91,16 +91,20 @@ select { case <-ticker.C: nowTs := time.Now().Unix() + var users []*CurrentActiveUser r.mu.RLock() - for userID, user := range r.Users { + for _, user := range r.Users { + users = append(users, user) + } + r.mu.RUnlock() + for _, user := range users { if nowTs-user.lastActiveTime > r.expireSecond { r.mu.Lock() logx.Infof("removed in active user:%+v", user) - delete(r.Users, userID) + delete(r.Users, user.UserID) r.mu.Unlock() } } - r.mu.RUnlock() case <-r.ctx.Done(): fmt.Println("stop RemoveInActiveUser.") return -- Gitblit v1.8.0