GoRoutine可以替代C Socket的多线程来做游戏服务器么?

发布于 2022-08-25 12:05:59 字数 167 浏览 6 评论 0

老师留了一个游戏服务器作业,我想用Go来写,节省代码量,顺便用用新技术~

但是老师在讲服务器要求的结构的时候用了多进程来分配客户端连接数量。我查了资料,貌似Go没有提供很明显的多进程接口,倒是有rpc包,感觉不太靠谱……我自己还是倾向于用GoRoutine搭建,便于线程间通信。我想问下,这样做靠谱么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

始终不够 2022-09-01 12:05:59

用Go写游戏服务器是一个非常棒的选择,当然主要一个原因就是Go语言特有的Goroutine和Channel。

看了这个问题后我不是很清楚你们是在学习多线程编程还是分布式架构。如果是多线程编程,对应Go的实现当然是Goroutine和Channel。如果是分布式架构,用HTTP编程应该最适合你,模型足够简单。HTTP编程我就不介绍了,我们之前写的《Go语言编程》中也有介绍。如果要多个HTTP服务器分摊客户端请求,前面加个Nginx作LB应该就可以了。

Go语言中控制Goroutine数量有挺多灵活的办法的,一般最简单的就是预先直接创建这么多个Goroutine,然后每个Goroutine自身是一个死循环,持续从作为参数传入的Channel中读取需要处理的数据包。

这里就先不展开了,看你具体的需求再论。我以前参与的游戏项目都是用C++然后是IOCP和epoll之类的处理高并发。可惜当时还没有Go可以用,否则应该会更有乐趣。

或十年 2022-09-01 12:05:59

C多进程或多线程开发明显是史前时代了,知识结构落后啊,多看点网络编程的书,goroutine绝对秒杀c多线程。

凉城 2022-09-01 12:05:59

给你一个其他的选择node.js,golang也是可以的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文