项目分析(channelid是如果产生的)
channelid如何生成的
///////////////////////////////////////////////////////////////
//
// I_TCPServer.h
// Description:
//
///////////////////////////////////////////////////////////////
#pragma once
#ifndef _ChannelIDGenerator_H
#define _ChannelIDGenerator_H #include <queue>
#include <windows.h>
class ChannelIDGenerator
{
public:
ChannelIDGenerator()
{
m_size = ;
};
~ChannelIDGenerator(){}; private:
std::queue<int> m_ids;
int m_size;
public:
void init(int start, int size)
{
if(m_size)
MessageBox(NULL, L"init m_size超出范围", L"重大错误freeId(int id)", MB_OK);
m_size = size;
for (int i = start; i < start + m_size; i++)
{
m_ids.push(i);
}
}
int getId()
{
if(m_ids.empty())
return -;
int id = m_ids.front();
m_ids.pop();
return id;
}
void freeId(int id)
{
if(id < || id > m_size)
MessageBox(NULL, L"channel id超出范围", L"重大错误freeId(int id)", MB_OK);
m_ids.push(id);
if((int)m_ids.size() > m_size)
{
MessageBox(NULL, L"channel id超出范围", L"重大错误freeId(int id)", MB_OK);
int debug = ;
}
}
int getSize()
{
return m_size;
}
}; #endif
可以看出这个channelid是由队列中产生的
刚开始的时候插入12000个,每连接一个玩家的时候从front一个,每下线一个会push一个
刚开始的时候我以为这个队列不会乱,但发现会乱的,但这个没关系只要不会出现两个玩家的channelid一样就行了
如果上线的玩家大于12000的时候,我实验了一下发现每次front的时候都是-,所以这个会造成channelid会重复,而服务器发送消息就是通过这个channelid发送的肯定会出错
项目分析(channelid是如果产生的)的更多相关文章
- iOS项目分析及优化
iOS项目分析及优化 来源:吴白的简书 从代码看一个程序员的笔力 从代码的整洁度上就可以看出一个程序员的实力,规范其实就是让你养成一种良好习惯的标杆,在此面前我们应该顺从.本篇我们以OC为例,统 ...
- 项目分析_xxoo-master
项目介绍:使用java1.5的原生xml操作类实现 对象<-->xml字符串的相互转化 项目分析:主要分为是三个部分 1.容器类:AbstractContainer 存储x ...
- 织梦channelid是什么?dede channel typeid有什么区别
昨儿帮小伙伴整dedecms首页调用栏目文章,当时没注意用到的是channelid参数,修改了好多次赋值,新建了一个新的栏目获取id是156,添加栏目文章,把channelid改为156重新生成首页, ...
- std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义 这个容器保存了所有客户端连接的channel Channel2* Li ...
- 【项目分析】利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码
原文:[项目分析]利用C#改写JAVA中的Base64.DecodeBase64以及Inflater解码 最近正在进行项目服务的移植工作,即将JAVA服务的程序移植到DotNet平台中. 在JAVA程 ...
- ABP项目依赖图,根据自已生在的Demo项目分析而得
根据自已生在的Demo项目分析而得 在线学习代码库:https://github.com/AtwindYu/ABPStudy
- hadoop项目实战--ETL--(一)项目分析
项目描述 一 项目简介 在远程服务器上的数据库中有两张表,user 和order,现需要对表中的数据做分析,将分析后的结果再存到mysql中.两张表的结构如下图所示 现需要分析每一天user和,ode ...
- 学习不一样的vue实战(2): 项目分析
学习不一样的vue实战(2): 项目分析 首先 首发博客: 我的博客 项目源码: 源码(喜欢请star) 项目预览: 预览 上一章: <学习不一样的vue(1)实战:环境搭建> 我的Q群: ...
- ATM项目分析
ATM项目分析 项目源代码下载 其实本项目的需求分析乍一看比较复杂,但是细细拆分出来实际实现还是比较容易的.基本用上前面所学的所有知识点. 1.额度 15000或自定义 2.实现购物商场,买东西加入购 ...
随机推荐
- (转)PHP的语言结构和函数的区别
相信大家经常看到对比一些PHP应用中,说用isset() 替换 strlen(),isset比strlen执行速度快等. 例子: if ( isset($user) ) { //do some thi ...
- STM32F0xx_FLASH编程(片内)配置详细过程
Ⅰ.概述 关于数据的储存,我觉得编程的人基本上都会使用到,只是看你储存在哪里.STM32的芯片内部FLASH都是可以进行编程的,也就是说可以拿来储存数据.但是,很多做一些小应用程序开发的人都没有利用好 ...
- 解决 MVC 用户上线下线状态问题
以前工作项目中就有一个微博类功能,其中也出现了用户在线和离线的问题. 但是因为初入程序猿 使用的是 Session _end 上个事件. Session _end 这个事件不需要怎么解释吧 就是在se ...
- highcharts 显示点值的效果
plotOptions: { line: { /* <s:if test='#request.rdflags=="point"'> <s:if test=&quo ...
- "大账户"时代
当要下载某文件时,哪怕是免积分,也需要登陆账户才能下载. 当要浏览某论坛时,只有注册账户,才可以浏览帖子. 当要网购商品时,必须注册账户,还要有众多宝宝平台,才可以实现交易. 当要团购时,必须先 ...
- MySql 用户 及权限操作
bin/msyql -h host -u user -p bin/mysql -u mysql -p 本地登录 如无密码按回车直接进入mySql bin/mysqladmin -u roo ...
- C# 获取图片的EXIF 信息
关于 EXIF 信息的介绍. 1 EXIF,是英文Exchangeable Image File(可交换图像文件)的缩写.EXIF是一种图像文件格式,只是文件的后缀名为jpg.EXIF信息是由数码相 ...
- ZLG_GUI配置与函数介绍
http://www.docin.com/p-825479457.html ZLG_GUI配置与函数介绍
- Swift :?和 !
Swift语言使用var定义变量,但和别的语言不同,Swift里不会自动给变量赋初始值, 也就是说变量不会有默认值,所以要求使用变量之前必须要对其初始化 .如果在使用变量之前不进行初始化就会报错: v ...
- ios多线程和进程的区别(转载)
很想写点关于多进程和多线程的东西,我确实很爱他们.但是每每想动手写点关于他们的东西,却总是求全心理作祟,始终动不了手. 今天终于下了决心,写点东西,以后可以再修修补补也无妨. 一.为何需要多进程(或者 ...