游戏开发论坛

 找回密码
 立即注册
搜索
查看: 4322|回复: 7

网络游戏引擎服务器的实现

[复制链接]

3

主题

10

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2004-6-24 10:42:00 | 显示全部楼层 |阅读模式

我一直在考虑网络游戏服务器端的实现:
    1,若是采用完成端口+线程池,但我考虑若是5000个用户同时登陆一台服务器,那我们的线程数也要建立5000个啊!!那效率其不是非常的低啊??!!
    2,或是采用SELECT模式。
   
各位大虾兄弟们若有合适的思想及建议请告诉兄弟我啊!!在下非常的感激您啊!!!
-------------------------------------------------------------------------------------------
  我现在公司做视频会议系统开发,业余时间做自己网络游戏引擎。我的EMAIL:
  gangyujing@hotmail.com              
   希望朋友们和我交流!! [em3] [em5]

0

主题

22

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2004-6-24 11:24:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

完成端口的线程数通常是与CPU数量相等的,而线程池并不是要为每个Client建立单独的线程,把完成端口和线程池扯到一起本身就比较容易让人误解。

29

主题

99

帖子

104

积分

注册会员

Rank: 2

积分
104
发表于 2004-6-24 11:49:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

都是误导人

15

主题

109

帖子

109

积分

注册会员

Rank: 2

积分
109
QQ
发表于 2004-6-24 12:47:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

是不可以这样的呀!!对于网络游戏服务器端引擎设计处理,希望能够把好三个关键呀!!
1。网络通信引擎端。
2。协议消息处理分析。
3。world框架设计。
这些方面的设计不只是一两个完成端口就能够处理的。
而其中关于用户的管理,也不能简单的理解为一个用户就需要处理一个单独线程,这样处理的后果将是不可预计的。
大家有兴趣,互相交流。。81556019

9

主题

121

帖子

121

积分

注册会员

Rank: 2

积分
121
QQ
发表于 2004-6-24 15:48:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

如果用完成端口管理完成通知不需要每个用户创建一个线程,设计完成端口的目的就是为了避免一个socket一个线程的用法,一般来说线程池的备用线程只有几个(有的人说一个cpu一个,有的人说需要cpu个数*2+2个线程能达到最高效率)。这些都要视情况而定,不过一般不超过10个线程,我用的是cpu个数*2+2个线程等待完成消息,服务器有1个cpu所以是4个等待IO完成的线程

1

主题

5

帖子

13

积分

新手上路

Rank: 1

积分
13
发表于 2004-6-24 16:46:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

一个线程 可以 实现 多个用户呀!

58

主题

281

帖子

281

积分

中级会员

Rank: 3Rank: 3

积分
281
QQ
发表于 2004-6-25 00:36:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

多线程不好协调,我本来用多线程,后来改为Select了。

2

主题

57

帖子

57

积分

注册会员

Rank: 2

积分
57
发表于 2004-6-25 13:10:00 | 显示全部楼层

Re:网络游戏引擎服务器的实现

5000在线的服务器不大好实现,因为游戏服务器不单是收发数据的事情,
而且还有其他的逻辑处理,那才是最花CPU资源的。
游戏服务器一般都需要采用服务器群组来实现。
多线程协调确实不容易,必须多做压力测试,小心嵌套锁,不要出现互锁现象。
至于开多少线程最好看服务器CPU的数量,做做压力测试,看看效率。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-7-2 12:54

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表