Closed 514366607 closed 1 year ago
高并发情况下,操作map会导致进程直接关闭。
gnet 的内部设计是无锁的,通过确保每个 eventloop 的内部资源只能由其所属的单一 goroutine 访问,你是不是在 eventloop 的 goroutine 之外调用了非并发安全的方法?
gnet 的内部设计是无锁的,通过确保每个 eventloop 的内部资源只能由其所属的单一 goroutine 访问,你是不是在 eventloop 的 goroutine 之外调用了非并发安全的方法?
这两个函数在 不同的goroutine 同时调用就可能同时调用到c.loop.closeConn() (c conn) Close() (c conn) Write()
我的出现的场景是 角色连接网关后在监听角色服务的推送通知。
在网关连接断开,且收到角色服务的通知,这时候就会要通知给玩家。
就会同时调用 close和write,出现同时操作map的情况
哦,原来是我的使用方式不对,我看到相关代码了,thx。
name: Pull request about: Propose changes to the code title: '' labels: '' assignees: ''
1. Are you opening this pull request for bug-fixes, optimizations or new feature?
bug-fixes
2. Please describe how these code changes achieve your intention.
使用协程安全的sync.Map来存放全局变量。
3. Please link to the relevant issues (if any).
4. Which documentation changes (if any) need to be made/updated because of this PR?
4. Checklist