diff --git a/logic/go.mod b/logic/go.mod index 77e3c6c74..67cafc6cb 100644 --- a/logic/go.mod +++ b/logic/go.mod @@ -22,6 +22,7 @@ require ( github.com/BurntSushi/toml v1.4.0 // indirect github.com/antlabs/stl v0.0.2 // indirect github.com/bits-and-blooms/bitset v1.5.0 // indirect + github.com/bruceshao/lockfree v1.1.2 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/clbanning/mxj/v2 v2.7.0 // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect diff --git a/logic/go.sum b/logic/go.sum index 9269a0094..8a9d7583e 100644 --- a/logic/go.sum +++ b/logic/go.sum @@ -8,6 +8,8 @@ github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df h1:GSoSVRLo github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df/go.mod h1:hiVxq5OP2bUGBRNS3Z/bt/reCLFNbdcST6gISi1fiOM= github.com/bits-and-blooms/bitset v1.5.0 h1:NpE8frKRLGHIcEzkR+gZhiioW1+WbYV6fKwD6ZIpQT8= github.com/bits-and-blooms/bitset v1.5.0/go.mod h1:gIdJ4wp64HaoK2YrL1Q5/N7Y16edYb8uY+O0FJTyyDA= +github.com/bruceshao/lockfree v1.1.2 h1:V3j7bZWS+yDjazffbobpR+ZCVq98DNJcZMvO8vWFLmc= +github.com/bruceshao/lockfree v1.1.2/go.mod h1:zkhImea4VTfzWvFF1Lleo1esCZeJLGgrYN+mUuqNrMA= github.com/brunoga/deep v1.2.5 h1:bigq4eooqbeJXfvTfZBn3AH3B1iW+rtetxVeh0GiLrg= github.com/brunoga/deep v1.2.5/go.mod h1:GDV6dnXqn80ezsLSZ5Wlv1PdKAWAO4L5PnKYtv2dgaI= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= diff --git a/logic/service/player/SocketHandler_Tomee.go b/logic/service/player/SocketHandler_Tomee.go index 0fa9fa864..346ce717b 100644 --- a/logic/service/player/SocketHandler_Tomee.go +++ b/logic/service/player/SocketHandler_Tomee.go @@ -12,6 +12,7 @@ import ( "fmt" "reflect" + "github.com/bruceshao/lockfree" "github.com/gobwas/ws" "github.com/gobwas/ws/wsutil" "github.com/gogf/gf/v2/os/glog" @@ -205,11 +206,13 @@ type ClientData struct { Wsmsg *WsCodec Conn gnet.Conn SaveL sync.Once //保存锁 - SaveDone chan struct{} + LF *lockfree.Lockfree[[]byte] + //SaveDone chan struct{} } func NewClientData(c gnet.Conn) *ClientData { // 创建事件处理器 + // 创建消费端串行处理的Lockfree cd := ClientData{ @@ -217,6 +220,11 @@ func NewClientData(c gnet.Conn) *ClientData { Conn: c, Wsmsg: &WsCodec{}, } + // cd.LF = lockfree.NewLockfree[[]byte]( + // 1024*1024, + // cd, + // lockfree.NewSleepBlockStrategy(time.Millisecond), + // ) return &cd }