[发明专利]队列控制方法及装置在审
申请号: | 201810274801.5 | 申请日: | 2018-03-29 |
公开(公告)号: | CN110321215A | 公开(公告)日: | 2019-10-11 |
发明(设计)人: | 单卫华;董阳 | 申请(专利权)人: | 华为技术有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50;G06F9/54 |
代理公司: | 广州三环专利商标代理有限公司 44202 | 代理人: | 郝传鑫;熊永强 |
地址: | 518129 广东*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 第一数据 队列 存储请求 线程 数据存储请求 数据获取请求 队列控制 请求存储 发送 使用效率 数据存储 复用 内存 存储 申请 | ||
本申请实施例公开了队列控制方法及装置,所述方法包括:接收生产者线程发送的第一数据存储请求,确定第一数据存储请求对应的分片队列;将第一数据存储请求所请求存储的第一数据存储到分片队列中;接收消费者线程发送的数据获取请求;根据数据获取请求从分片队列中获取第一数据;接收生产者线程发送的第二数据存储请求;将第二数据存储请求所请求存储的第二数据存储到分片队列中。通过分片队列的复用,提高了内存的使用效率。
技术领域
本申请涉及通信技术领域,尤其涉及队列控制方法及装置。
背景技术
多线程,是指从软件或者硬件上实现多个线程并发执行的技术。多线程访问时,为了保证线程安全,会在队列的结构体中加入一个队列锁以锁住整个队列,然后一个线程可以对该队列进行相关的操作,其他线程不能对该队列进行访问,直至对该队列进行相关操作的线程读取完数据之后,其他线程才可以对该线程进行访问。线程安全的队列可以包括有锁的阻塞队列或者采用非阻塞式算法的非阻塞队列。
针对非阻塞队列,一条消息添加到队列中时,队列会创建一个节点,该操作会申请内存资源以存储该节点相关信息;当该消息出队后,对应节点依旧存在于内存中,通过垃圾回收(GarbageCollection,GC)释放该节点的内存资源。在事件处理系统或者高性能服务器的消息队列中,假设每条事件包含20个变量,若要达到100万每秒执行的事务数量(transactions per second,TPS),需要多个线程从队列中添加以及删除对象100万*20*2=4000万次/秒,消息在入队时会创建一个节点,并为该节点分配内存资源,该节点的内存资源是在消息出队后,通过GC来完成内存释放,当操作频次达到一定量级时,频繁的内存申请及GC成为制约性能的关键,导致内存的使用效率较低。
发明内容
本申请实施例所要解决的技术问题在于,提供队列控制方法及装置,通过分片队列的复用,提高了内存的使用效率。
第一方面,本申请实施例提供了一种队列控制方法,控制设备接收生产者线程发送的第一数据存储请求之后,可以确定第一数据存储请求对应的分片队列,并将第一数据存储请求所请求存储的第一数据存储到分片队列中。进一步的,控制设备接收消费者线程发送的数据获取请求之后,可以根据数据获取请求从分片队列中获取第一数据。然后,控制设备接收生产者线程发送的第二数据存储请求之后,可以将第二数据存储请求所请求存储的第二数据存储到该分片队列中。
在该技术方案中,控制设备在接收到生产者线程发送的第一数据存储请求时,在预先分配有内存资源的至少一个分片队列中确定第一数据存储请求对应的分片队列,无需每接收到一个数据存储请求实时创建一个分片队列,并为该分片队列分配内存资源。另外,控制设备获取存储在分片队列中的第一数据之后,无需通过GC释放该分片队列的内存资源,而是循环复用该分片队列的内存资源,即在下次接收到第二数据存储请求时,将第二数据存储请求所请求存储的第二数据存储到该分片队列中。相对传统的队列控制方法中每有一条消息添加到队列中时,需要创建一个节点,申请内存资源以存储该节点相关信息,且在该消息出队后,对应节点依旧存在于内存中,通过GC释放该节点的内存资源,本申请实施例可循环复用分片队列的内存,无需频繁创建分片队列以及释放分片队列的内存,提高了分片队列的使用效率。
在一个设计方案中,控制设备将第一数据存储请求所请求存储的第一数据存储到分片队列中之前,还可以建立生产者线程和分片队列的关联关系,关联关系用于指示生产者线程独占分片队列的使用权。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华为技术有限公司,未经华为技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810274801.5/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种数据查询方法、装置及设备
- 下一篇:跨解聚存储器装置的共享存储器池的仲裁