[发明专利]一种适用于多生产者多消费者模式的数据管理方法及系统在审
申请号: | 201611237602.4 | 申请日: | 2016-12-28 |
公开(公告)号: | CN106648898A | 公开(公告)日: | 2017-05-10 |
发明(设计)人: | 肖山林 | 申请(专利权)人: | 深圳竹信科技有限公司 |
主分类号: | G06F9/50 | 分类号: | G06F9/50 |
代理公司: | 深圳市深佳知识产权代理事务所(普通合伙)44285 | 代理人: | 王仲凯 |
地址: | 518057 广东省深圳市南山区高*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 适用于 生产者 消费者 模式 数据管理 方法 系统 | ||
技术领域
本发明涉及计算机软件技术领域,特别涉及一种适用于多生产者多消费者模式的数据管理方法及系统。
背景技术
目前,在传统软件技术的多生产者多消费者模式下,为了保证数据的正确性,需要引入互斥锁,否则将会导致多线程同时访问队列数据而引起线程同时进入互斥区等问题。
然而,在多生产者多消费者模式的实现过程中,互斥锁的引入,将会导致在队列访问负载较大的情况下造成CPU效率低下甚至引发程序的死锁等问题。
综上所述可以看出,如何在实现多生产者多消费者模式的过程中,保证软件程序的稳定性和执行效率是目前有待解决的问题。
发明内容
有鉴于此,本发明的目的在于提供一种适用于多生产者多消费者模式的数据管理方法及系统,能够在实现多生产者多消费者模式的过程中,保证了软件程序的稳定性和执行效率。其具体方案如下:
一种适用于多生产者多消费者模式的数据管理方法,包括:
当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断预设队列当前是否符合入列条件,如果是,则将该新数据元素缓存至所述预设队列,如果否,则禁止将该新数据元素缓存至所述预设队列;
当多个消费者中的任一消费者需要对所述预设队列中缓存的数据元素进行处理,则利用std::atomic类型,判断所述预设队列当前是否符合出列条件,如果是,则从当前所述预设队列中提取出相应的数据元素,并发送至相应的消费者,以进行相应的数据处理。
可选的,所述判断预设队列当前是否符合入列条件的过程,包括:
判断所述预设队列当前是否已经存满,如果否,则判定当前所述预设队列符合入列条件,如果是,则判定当前所述预设队列不符合入列条件。
可选的,所述判断所述预设队列当前是否符合出列条件的过程,包括:
判断当前所述预设队列中是否存在未处理的数据元素,如果是,则判定当前所述预设队列符合出列条件,如果否,则判定当前所述预设队列不符合出列条件。
可选的,所述方法,还包括:
对所述预设队列进行实时监视;
若监视到当前所述预设队列中的剩余缓存空间容量小于预设容量阈值,则发出相应的容量预警信息。
可选的,所述预设队列为环形缓冲区。
本发明还相应公开了一种适用于多生产者多消费者模式的数据管理系统,包括:
入列管理模块,用于当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断预设队列当前是否符合入列条件,如果是,则将该新数据元素缓存至所述预设队列,如果否,则禁止将该新数据元素缓存至所述预设队列;
出列管理模块,用于当多个消费者中的任一消费者需要对所述预设队列中缓存的数据元素进行处理,则利用std::atomic类型,判断所述预设队列当前是否符合出列条件,如果是,则从当前所述预设队列中提取出相应的数据元素,并发送至相应的消费者,以进行相应的数据处理。
可选的,所述入列管理模块,包括:
第一判断单元,用于当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断所述预设队列当前是否已经存满,如果否,则判定当前所述预设队列符合入列条件,如果是,则判定当前所述预设队列不符合入列条件;
入列控制单元,用于当所述第一判断单元判定当前所述预设队列符合入列条件,则将该新数据元素缓存至所述预设队列,当所述第一判断单元判定当前所述预设队列不符合入列条件,则禁止将该新数据元素缓存至所述预设队列。
可选的,所述出列管理模块,包括:
第二判断单元,用于当多个消费者中的任一消费者需要对所述预设队列中缓存的数据元素进行处理,则利用std::atomic类型,判断当前所述预设队列中是否存在未处理的数据元素,如果是,则判定当前所述预设队列符合出列条件,如果否,则判定当前所述预设队列不符合出列条件;
出列管理单元,用于当所述第二判断单元判定当前所述预设队列符合出列条件,则从当前所述预设队列中提取出相应的数据元素,并发送至相应的消费者,以进行相应的数据处理。
可选的,所述数据管理系统,还包括:
队列监视模块,用于对所述预设队列进行实时监视;
容量预警模块,用于当所述队列监视模块监视到当前所述预设队列中的剩余缓存空间容量小于预设容量阈值,则发出相应的容量预警信息。
可选的,所述预设队列为环形缓冲区。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于深圳竹信科技有限公司,未经深圳竹信科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201611237602.4/2.html,转载请声明来源钻瓜专利网。