下载首页 | 资讯中心 | 下载分类 | 最近更新 | 排 行 榜 | 国产软件 | 国外软件 | 汉化补丁 |
文章搜索: 分类 关键字 收藏本站设为首页
您的位置:首页网页制作网页制作 → Win32 平台和linux平台下 MMORPG 服务器端编程的区别__教程
Win32 平台和linux平台下 MMORPG 服务器端编程的区别__教程
日期:2007-1-6 11:17:37 人气:57     [ ]
上一页 [1] 下一页
 

由于linux是使用进程来模拟线程,系统开销比较大,不太经济划算。所以在网络连接中,需要用一个结构来储存,其中需要包含一个向客户端写消息的缓冲,还需要一个从客户端读消息的缓冲,具体的大小根据具体的消息结构来定了。另外对于同步,需要一些时间校对的值,还需要一些各种不同的值来记录当前状态,下面给出一个初步的连接的结构:

typedef connection_s {
    user_t *ob; /* 指向处理服务器端逻辑的结构 */
    int fd; /* socket连接 */
    struct sockaddr_in addr; /* 连接的地址信息 */
    char text[MAX_TEXT]; /* 接收的消息缓冲 */
    int text_end; /* 接收消息缓冲的尾指针 */
    int text_start; /* 接收消息缓冲的头指针 */
    int last_time; /* 上一条消息是什么时候接收到的 */
    struct timeval latency; /* 客户端本地时间和服务器本地时间的差值 */
    struct timeval last_confirm_time; /* 上一次验证的时间 */
    short is_confirmed; /* 该连接是否通过验证过 */
    int ping_num; /* 该客户端到服务器端的ping值 */
    int ping_ticker; /* 多少个IO周期处理更新一次ping值 */
    int message_length; /* 发送缓冲消息长度 */
    char message_buf[MAX_TEXT]; /* 发送缓冲区 */
    int iflags; /* 该连接的状态 */
} connection;

    而Win32P平台就可以开合适的线程来分别满足通讯任务、系统认证和网络日常检测任务如Ping和心跳包机制的方便实现,又可以在一个进程中方便高效地进行数据传输和协调,工作效率明显高于单进程与单进程之间的机制。

    对于像实现棋牌类的通讯量相对小的网络游戏还可以忍受,对于通讯较频繁的MMORPG来说,诸多微小因数的高效率的长时间积累,最终会对服务器端产生明显的影响。
另外在Linux下,线程也称作“轻量级进程”,同时有两种实现方式:核心线程、用户态线程。
2.2/2.4版本下的线程性能不是很高,对POSIX标准支持的也不是很好。
在2.6版本的内核下,有自己的线程库:
(转)
在INRIA(位于法国巴黎)的Xavier Leroy,以及Pavel Krauz,Richard Henderson
和另外一些人,已经开发出了LINUX下的一种线程库,该线程库实现了一个叫“一对
一 ”模型(One-to-One), 它可以利用多处理器。该库基于LINUX的一个新的系统
调用--clone()(也就是说它只能用在LINUX上了)。该调用实现于LINUX2.0或以
上版本,并可以运行于Intel,Alpha SPARC?*68k以及MIPS等处理器的机器上。其
一个缺点在于它对信号的非标准处理上。
LinuxThreads采用称为1-1模型:每个线程实际上在核心是一个个单独的进程,核心
的调度程序负责线程的调度,就象调度普通进程。线程是用系统调用clone()创建的
,clone()系统调用是fork()的推广形式,它允许新进程共享父进程的存储空间、文
件描述符和信号处理程序。
“一对一”模型的优点在于:
A 最小限度消耗的CPU级多处理技术(每个CPU一个线程);
B 最小限度消耗的I/O操作;
C 一种简单和强壮的实现(核心调度程序为我们做了大部分艰难的工作)。
该模型主要的缺点在于在互斥和条件操作时的环境切换的系统消耗更大,而该切换
是通过内核来进行的。但是由于LINUX内核对环境切换的处理相当有效,因此在一定
程度上弥补了这个缺点。
除了“一对一”模型之外还有两种基本模型。
“多对一”模型基于用户级的调度,线程切换完全由用户程序完成;从核心角度看,
只有一个进程正在运行。这种模型不是我们所关心的,因为它无法利用多处理器的
优点,而且要用不合理的方法处理I/O操作阻塞。目前LINUX上存在有数个用户态的
线程库,但我发现它们在功能、性能以及强壮性上都存在缺陷。
“多对多”模型结合了核心态和用户态的调度:数个核心态线程并发的执行,每个
都作为一个用户态线程的调度者对用户态线程进行调度。大多数商业版本的UNIX(
SOLARIS,DIGITAL UNIX和IRIX)都采用此模型实现POSIX线程标准。该模型结合了
“多对一”和“一对一”模型的优点,而且由于它能够避免另外两种模型缺陷,尤
其是当内核在处理环境切换时效率较低时,比如DIGITAL UNIX,因而相当具有吸引
力。但不幸的是,这种模型的实现相当复杂,而且需要LINUX内核所不能提供的内核
功能。Linus Torvalds和其它Linux内核开发者一直以来都在全面简单化的原则下推
动“一对一”模型,并且他们大大的提高了Linux内核线程切换的效率。Linux线程遵
从了他们一直以来的原则。

出处:本站原创 作者:佚名
 阅读排行
01.精美qq空间横幅代码
02.最酷qq个性女生网名
03.最新又有免费QQ秀啦《..
04.巧用透明FlaSh扮靓你的..
05.花之神匠代码(最新代码..
06.最新QQ空间免费导航
07.最新免费个人形象设置..
08.最新qq空间flash代码m..
09.CSS技术结合图像实现动..
10.Photoshop光影魔术师:..
11.QQ音速种子狂刷
12.最新QQ空间透明代码
13.PS实例教程:教你制作结..
14.Photoshop光影魔术师:..
15.制作背景图__教程
16.用Photoshop制作漂亮的..
17.如何获得QQ音速种子
18.≤QQ空间代码≥在日志..
19.网页浮动广告的制作代..
20.用Photoshop制作大红灯..
21.常用CSS
22.Photoshop给靓丽美女打..
 推荐文章
·Photoshop 表现技法之..
·快速将你的相片矢量化..
·PHOTOSHOP制作炽热的太..
·用Photoshop制作美丽的..
·流行杀手的娃娃工厂__..
·打造8号台球__教程
·PHOTOSHOP制作待机MM图..
·用Photoshop帮MM做纹身..
·PHOTOSHOP美眉着色绝招..
·PHOTOSHOP花露的制作_..
·PHOTOSHOP渐变工具的巧..
·PHOTOSHOP手绘奥兰多-..
·高难度抠图两种方法__..
·Photoshop高尔夫球的制..
·Photoshop打造精美玉佩..
Eqxia_COM下载站 版权所有 Copyright© 2001-2005 Www.eqxia.COM, All Rights Reserved.