当前位置: 技术问答>linux和unix
游戏服务器开发疑问,请赐教
来源: 互联网 发布时间:2015-06-28
本文导语: 我想做个游戏服务器 由于每个在线用户间要进行大量的数据交互,所以不适合一个用户一个线程。 如果所有的用户连接都在一个进程里处理,考虑到每个用户数据分析时间可能过长,会影响其他用户,而且用户是在...
我想做个游戏服务器
由于每个在线用户间要进行大量的数据交互,所以不适合一个用户一个线程。
如果所有的用户连接都在一个进程里处理,考虑到每个用户数据分析时间可能过长,会影响其他用户,而且用户是在一定条件下可分组的,所以考虑每组用户用一个线程。
只开一个端口接受所有用户连接、数据,然后依据条件把fd分发给每个线程
但出现一个问题 就是如何将accept的新fd传给线程
如果用全局变量,涉及到加锁,依然是主任务阻塞,等子线程处理完自己所有的用户fd后,施放fd区的锁
如果用队列,是不是就意味着每个子线程都要开个队列?
考虑用线程不用进程,一是交互数据时方便,二是,添加其他游戏时方便
请大家帮分析一下,指点一下
我没接触过游戏的设计,考虑的可能很不周到、实际,汗颜
由于每个在线用户间要进行大量的数据交互,所以不适合一个用户一个线程。
如果所有的用户连接都在一个进程里处理,考虑到每个用户数据分析时间可能过长,会影响其他用户,而且用户是在一定条件下可分组的,所以考虑每组用户用一个线程。
只开一个端口接受所有用户连接、数据,然后依据条件把fd分发给每个线程
但出现一个问题 就是如何将accept的新fd传给线程
如果用全局变量,涉及到加锁,依然是主任务阻塞,等子线程处理完自己所有的用户fd后,施放fd区的锁
如果用队列,是不是就意味着每个子线程都要开个队列?
考虑用线程不用进程,一是交互数据时方便,二是,添加其他游戏时方便
请大家帮分析一下,指点一下
我没接触过游戏的设计,考虑的可能很不周到、实际,汗颜
|
游戏服务器开发的头等大事不是服务器,而是游戏。
其实,这就是一个普通的多客户端网络编程问题。既然使用线程,则fd应该可以很方便的共享,作为线程函数的参数传递也可。在其他板块讨论过这类的问题,如果不想自己设计复杂的线程模型,也可以使用第三方提供的函数库,如ACE等。搜索一下以前的帖子吧。
其实,这就是一个普通的多客户端网络编程问题。既然使用线程,则fd应该可以很方便的共享,作为线程函数的参数传递也可。在其他板块讨论过这类的问题,如果不想自己设计复杂的线程模型,也可以使用第三方提供的函数库,如ACE等。搜索一下以前的帖子吧。
|
大型服务器应该考虑线程池了,一定在linux下吗?windows下可以考虑用iocp吧。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。