gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 03:16:33 26 4
gpt4 key购买 nike

为了保存 Gorilla websocket 连接,我可以这样做,其中 key 可以是 userId。

connections := make(map[int]*connection)

我正在使用一种叫做 supervisord 的东西

http://supervisord.org/

这是一个过程控制系统,因此我能够运行 go 应用程序在后台作为守护进程。看起来有几个实例正在生成。

enter image description here

如果我将其设为全局变量,这些实例是否知道如何访问相同的连接变量?

var connections map[int]*connection

还是会有问题?

此外,由于 map 不是线程安全的,我是否应该创建一个结构并添加 sync.RWMutex 并在检查 key 是否存在之前执行 RLock()/Lock() 和 RUnlock()/Unlock()存在或从 map 中删除键时?

最佳答案

首先,它们不是进程而是线程,因此它们确实共享相同的全局状态。 htop shows threads as if they were processes .

只要您需要并发访问 map ,就需要同步它。您确实可以使用互斥量来做到这一点。

关于运行 Go 应用程序的多个实例时的 Gorilla websocket 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32649346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com