为了保存Gorilla websocket连接,我可以使用这样的键,其中键可以是userId。
connections := make(map[int]*connection)
我正在使用名为supervisord的东西
这是一个过程控制系统,以便我能够运行go应用程序 在后台作为守护进程。看起来好像有几个实例正在催生。
如果我将它设为全局,那些实例是否知道如何访问相同的连接变量?
var connections map[int]*connection
或者会有问题吗?
此外,由于map不是线程安全的,我应该创建一个struct并添加sync.RWMutex
并执行RLock()/ Lock()和RUnlock()/ Unlock(),然后再检查一个键是否存在或者删除一个来自地图的关键?
答案 0 :(得分:1)
首先,那些不是进程而是线程,因此它们确实将共享相同的全局状态。 htop shows threads as if they were processes
每当您需要并发访问地图时,您需要同步它。您确实可以使用互斥锁执行此操作。