网络游戏制作:网络游戏制作技术( 3)

   续上在这里我将要向大家简单介绍下游戏服务器中必须要处理另外项主要技术:

线程池技术

   开始 我来向大家简单来介绍下线程池概念先简单了解下线程先线程可以理解为个function , 是个为了进行某项任务或者处理某项具体事务例如:

UINT WINAPI FunctionCtrl(void *) //线程处理
{
进行某项任务或者处理某项具体事务
………….
EXITFUNCTION_CODE; //退出码
}

   而我们线程池自身可以理解为是很多线程个管理者也可以说是个很多线程统筹者我们线程池具有生成线程功能也具有撤消线程权利这就是简单线程池概念(我理解呵呵!!)接下来就来具体介绍线程池了!!

   首先 介绍我们为什么要使用线程池技术呢?大家都知道我们游戏服务器端要处理大量用户请求,同时需要发送大量游戏数据到客户端从而来驱动客户端执行和维持游戏进行那我们服务器端是如何进行处理呢?其实在这里我们就充分用到了线程池技术
那么用这种技术有什么好处和优点呢?以下就来简述这些有不足的处和不当的处希望有心人指正呵呵!!

   大家都了解在我们服务器整个运行过程中我们将整个运行时间分成很多个时间片而对于这些已经分成各个微小时间片而言在各个区别时间片中要处理用户请求和需要发送到用户端游戏数据量也将是不而处理用户请求和发送数据到客户端工作都是由系列线程来执行


鉴于上面这样我们就可以感性设想下服务器运行中两种情况:
   第种在我们服务器运行到某个时间片需要处理大量用户请求和发送大量数据有这样繁重工作任务我们就需要有很多工作者线程来处理完成这样任务以此来满足我们工作需要这样说我们就必须拥有很多工作者线程

   第 2种在我们服务器运行到某个时间片需要处理用户请求和发送数据工作量比较小由于任务比较少我们用来处理任务工作者线程也就不需要很多也就是说我们只要有少量工作者线程就可以达到我们工作要求了

   对于上面两种情况我们可以介绍说明这样个事实也就是说我们服务器在运行过程中运行状态是动态改变呼忙呼闲时急时慢服务器这样行为动作和性质可以做个如下比喻:服务器就是个企业在企业业务非常忙时候公司员工数量就必须要增多来满足业务需要而在企业不景气时候业务也就比较少那么来说就会有很多员工比较闲那我们该如何办呢?为了不浪费公司资源和员工自身资源我们就必须要裁减员工从而来配合公司运行而做这样工作可能是公司人力资源部或者其他部分现在就认为是人力资源部了呵呵

   对于上面比喻我们来抓几个关键词和列举关键词和我们主题对象进行对照以此来帮大家来简单理解服务器运行和线程池

企业 : 游戏服务器
人力资源部 : 线程池
职员 : 工作者线程

在说了这么多废话后就具体将线程池模型 ThreadPool.h文件提供以供大家参考:

GThreadPoolModel
{
friend UINT WINAPI PoolManagerProc(void* pThread); //线程池管理线程
friend UINT WINAPI WorkerProc (void* pThread); //工作者线程
enum SThreadStatus //线程池状态
{
BUSY,
NORMAL,
IDLE
};
enum SReturnvalue //线程返回值
{
MANAGERPROC_RETURN_value = 10001,
WORKERPROC_RETURN_value = 10002,
…………….
};
public:
GThreadPoolModel ;
virtual ~ GThreadPoolModel ;
virtual bool StartUp(WORD _num,WORD max_num)=0; //启动线程驰
virtual bool Stop(void )=0; //停止线程池
virtual bool ProcessJob(void *)=0; //提出工作处理要求
protected:
virtual bool AddNewThread(void )=0; //增加新线程
virtual bool DeleteIdleThread(void)=0; //删除空闲线程
UINT WINAPI PoolManagerProc (void* pThread); //线程池管理线程
UINT WINAPI WorkerProc (void* pThread); //工作者线程
GThreadPoolModel::SThreadStatus GetThreadPoolStatus( void ); //获取线程池当前工作状态
private:
void Init;
void Release;
protected:
………………………..
private:
};

以上是线程池模型个简单而对于具体工作处理线程池可以由此模型进行继承以此来满足具体需要到这里就简单向大家介绍了线程池处理方式有不对的处望指正同时欢迎大家和我交流

希望大家好我进行交流QQ :81556019 MSN :[email protected]
Tags:  网络游戏制作软件 如何制作网络游戏 网络游戏外挂制作 网络游戏制作

延伸阅读

最新评论

发表评论