为了账号安全,请及时绑定邮箱和手机立即绑定

运行 Go 应用程序的多个实例时的 Gorilla websocket 连接

运行 Go 应用程序的多个实例时的 Gorilla websocket 连接

Go
慕妹3242003 2021-11-08 16:05:05
为了保存 Gorilla websocket 连接,我可以这样做,其中键可以是 userId。connections := make(map[int]*connection)我正在使用一种叫做 supervisord 的东西http://supervisord.org/这是一个过程控制系统,因此我能够在后台运行 go 应用程序作为守护程序。看起来正在产生几个实例。如果我将其设为全局变量,这些实例是否知道如何访问相同的连接变量?var connections map[int]*connection还是会出问题?此外,由于地图不是线程安全的,sync.RWMutex在检查密钥是否存在或从地图中删除密钥之前,我应该创建一个结构并添加并执行 RLock()/Lock() 和 RUnlock()/Unlock() 吗?
查看完整描述

1 回答

?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

首先,那些不是进程而是线程,所以它们确实会共享相同的全局状态。htop 将线程显示为进程

每当您需要对地图进行并发访问时,都需要对其进行同步。你确实可以用互斥锁来做到这一点。


查看完整回答
反对 回复 2021-11-08
  • 1 回答
  • 0 关注
  • 260 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信