Golang中tcp有状态服务器的正确实现方法

Golang中tcp有状态服务器的正确实现方法,go,tcp,connection,stateful,Go,Tcp,Connection,Stateful,我相信以前有人问过这个问题,但从来没有发现任何与有状态连接相关的东西,所以现在开始 我正在golang编写一个服务器,用户在那里连接并登录,以便稍后询问具体日期。我这里的问题是,在进行研究时,我提出了一种通过tcp连接(请记住它是有状态的)将其存档的方法,在每个连接上创建一个goroutine,并保持它监听用户收入,如以下示例所示: 我对这种方法的怀疑与为每个连接的用户保持goroutine开放的想法有关 我想知道这是否是正确的方法,或者是否有另一种方法可以归档,比如减少新收入的例行列表 感谢g

我相信以前有人问过这个问题,但从来没有发现任何与有状态连接相关的东西,所以现在开始

我正在golang编写一个服务器,用户在那里连接并登录,以便稍后询问具体日期。我这里的问题是,在进行研究时,我提出了一种通过tcp连接(请记住它是有状态的)将其存档的方法,在每个连接上创建一个goroutine,并保持它监听用户收入,如以下示例所示: 我对这种方法的怀疑与为每个连接的用户保持goroutine开放的想法有关

我想知道这是否是正确的方法,或者是否有另一种方法可以归档,比如减少新收入的例行列表


感谢

goroutine不是线程,它们不需要在CPU上切换上下文,并且它们知道IO阻塞。我已经有超过24k个goroutine的服务器在商品硬件上运行良好。这是Go中的惯用模式,很好。你应该使用goroutine来实现这种目的。如果你想控制运行goroutine的数量,你可以使用一个缓冲通道,在“产生”一定数量的工作人员后立即阻塞.