当前位置:首页 » 软件开发
开发技术指南» 文章正文
    引言: Q:网络服务器的瓶颈在哪? A:IO效率。
 

 

 ·rogue guide     »显示摘要«
    摘要:guide to playing a rogue v2.0 written by osiris what’s new in version 2.0 i started to make an index of everything i changed since my last rogue guide. when i realized it would be more than 2 ......
    摘要:二、实现游戏的步骤  下图显示的是一个游戏midlet在成功安装和运行之后用户界面状态的典型的变化流程。我们想通过一个游戏者的视角来阐述开发移动游戏的过程。740)this.width=740" border=undefined>图3 用户界面状态图表  1 开始游戏  在用户启动midlet之后,将显示游戏特定的闪动屏幕。闪动屏幕是fullcanvas的一个实例。它可用于显示一个公司的标志或者用......


EPOLL为我们带来了什么。
q:网络服务器的瓶颈在哪?

a:io效率. 【程序编程相关:Deadreckoning的改进模型。

【推荐阅读:为什么上海盛大能成功?(3)

【扩展信息:3D游戏引擎设计与实现(1)

在大家苦苦的为在线人数的增长而导致的系统资源吃紧上的问题正在发愁的时候,linux 2.6内核中提供的system epoll为我们提供了一套完美的解决方案.传统的select以及poll的效率会因为在线人数的线形递增而导致呈二次乃至三次方的下降,这些直接导致了网络服务器可以支持的人数有了个比较明显的限制.

自从linux提供了/dev/epoll的设备以及后来2.6内核中对/dev/epoll设备的访问的封装(system epoll)之后,这种现象得到了大大的缓解,如果说几个月前,大家还对epoll不熟悉,那么现在来说的话,epoll的应用已经得到了大范围的普及.

那么究竟如何来使用epoll呢?其实非常简单.

通过在包含一个头文件#include 以及几个简单的api将可以大大的提高你的网络服务器的支持人数.

首先通过create_epoll(int maxfds)来创建一个epoll的句柄,其中maxfds为你epoll所支持的最大句柄数.这个函数会返回一个新的epoll句柄,之后的所有操作将通过这个句柄来进行操作.在用完之后,记得用close()来关闭这个创建出来的epoll句柄.

之后在你的网络主循环里面,每一帧的调用epoll_wait(int epfd, epoll_event events, int max events, int timeout)来查询所有的网络接口,看哪一个可以读,哪一个可以写了.基本的语法为:

nfds = epoll_wait(kdpfd, events, maxevents, -1);

其中kdpfd为用epoll_create创建之后的句柄,events是一个epoll_event*的指针,当epoll_wait这个函数操作成功之后,epoll_events里面将储存所有的读写事件.max_events是当前需要监听的所有socket句柄数.最后一个timeout是epoll_wait的超时,为0的时候表示马上返回,为-1的时候表示一直等下去,直到有事件范围,为任意正整数的时候表示等这么长的时间,如果一直没有事件,则范围.一般如果网络主循环是单独的线程的话,可以用-1来等,这样可以保证一些效率,如果是与主逻辑在同一个线程的话,则可以用0来保证主循环的效率.

epoll_wait范围之后应该是一个循环,遍利所有的事件:


...   下一页
 ·【分享】100多个3d模型下载站     »显示摘要«
    摘要:100多个3d模型下载站 http://www.strafe.com/2001/ud4http://www.3dcafe.com/asp/default.aspjhttp://www.3dcar.kg/le<http://www.3dheaven.net/;;zv[http://home.att.net/~modeloutlet/index.htmlmhttp://www.3d......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE