【技术实现步骤摘要】
一种基于多重循环缓存的消息处理方法及系统
本专利技术涉及计算机
,尤其涉及一种基于多重循环缓存的消息处理方法及系统。
技术介绍
网络游戏开发过程中不免会有一些网络消息处理,往往是一个线程接收消息,一个线程处理消息,消息内容会放到一个先入先出(FIFO)的队列中,在多线程的情况下,用锁来控制临界区数据。这里就遇到一个问题,数据大小是不定的,队列的空间申请太小,就会导致频繁申请释放内存,导致内存碎片,影响运行效率;队列空间申请太大,如果实际用到的数据量很小,则会无谓浪费空间。
技术实现思路
本专利技术的目的是针对现有技术的缺陷,提供了一种基于多重循环缓存的消息处理方法及系统。为了实现以上目的,本专利技术采用以下技术方案:一种基于多重循环缓存的消息处理方法,包括:S1.预设1K大小的内存作为环形队列的初始数据缓存;S2.设置写入游标writeOffset和读取游标readOffset;其中生产者负责写入数据,消费者负责读取数据;S3.设置当前写入的数据为T,当前环形队列的长 ...
【技术保护点】
1.一种基于多重循环缓存的消息处理方法,其特征在于,包括:/nS1.预设1K大小的内存作为环形队列的初始数据缓存;/nS2.设置写入游标writeOffset和读取游标readOffset;其中生产者负责写入数据,消费者负责读取数据;/nS3.设置当前写入的数据为T,当前环形队列的长度为S,判断生产者需要写入的数据是否大于T,若是,则采用倍增的方式对预设的内存进行扩展,得到容纳当前内存大小的环形队列;/nS4.将生产者需要写入的数据全部拷贝到得到的环形队列上。/n
【技术特征摘要】
1.一种基于多重循环缓存的消息处理方法,其特征在于,包括:
S1.预设1K大小的内存作为环形队列的初始数据缓存;
S2.设置写入游标writeOffset和读取游标readOffset;其中生产者负责写入数据,消费者负责读取数据;
S3.设置当前写入的数据为T,当前环形队列的长度为S,判断生产者需要写入的数据是否大于T,若是,则采用倍增的方式对预设的内存进行扩展,得到容纳当前内存大小的环形队列;
S4.将生产者需要写入的数据全部拷贝到得到的环形队列上。
2.根据权利要求1所述的一种基于多重循环缓存的消息处理方法,其特征在于,所述步骤S2中生产者负责写入数据,其中写入数据是从写入游标writeOffset开始拷贝数据内存;
消费者负责读取数据,其中读取数据是从读取游标readOffset开始拷贝内存。
3.根据权利要求1所述的一种基于多重循环缓存的消息处理方法,其特征在于,所述步骤S3中设置当前生产者写入数据为T,当前环形队列的长度为S,则写入游标writeOffset和读取游标readOffset的关系包括:
若readOffset等于writeOffset,则缓存中没有数据,表示为:T=S;
若readOffset小于writeOffset,则剩余写入数据的内存表示为:T=S-writeOffset+readOffset;
若readOffset大于writeOffset,则剩余写入数据的内存表示为T=readOffset–writeOffset。
4.根据权利要求3所述的一种基于多重循环缓存的消息处理方法,其特征在于,所述步骤S3中采用倍增的方式对预设的内存进行扩展是将当前内存大小的数据缓存设置为前一个内存大小的数据缓存的两倍。
5.根据权利要求1所述的一种...
【专利技术属性】
技术研发人员:周天涯,
申请(专利权)人:杭州电魂网络科技股份有限公司,
类型:发明
国别省市:浙江;33
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。