Including data management method, the invention discloses a producer consumer model more suitable for multi: when any producer multiple producers in generating new data elements, using std:: atomic type, the current queue is in accordance with the preset judgment into the conditions, if it is, then the new data elements to the default cache queue, if not, is banning the use of the new data elements to the default cache queue; when any consumer multiple consumers in need of data processing elements in the queue cache default, using std:: atomic type, pre judgment set is in accordance with the current queue out conditions, if it is, from the current default extracted corresponding data elements in the queue, and sent to the relevant consumers to be treated accordingly. The application can ensure the stability and efficiency of the software program in the process of realizing the multi producer and multi consumer model. In addition, the invention also discloses a data management system.
【技术实现步骤摘要】
本专利技术涉及计算机软件
,特别涉及一种适用于多生产者多消费者模式的数据管理方法及系统。
技术介绍
目前,在传统软件技术的多生产者多消费者模式下,为了保证数据的正确性,需要引入互斥锁,否则将会导致多线程同时访问队列数据而引起线程同时进入互斥区等问题。然而,在多生产者多消费者模式的实现过程中,互斥锁的引入,将会导致在队列访问负载较大的情况下造成CPU效率低下甚至引发程序的死锁等问题。综上所述可以看出,如何在实现多生产者多消费者模式的过程中,保证软件程序的稳定性和执行效率是目前有待解决的问题。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种适用于多生产者多消费者模式的数据管理方法及系统,能够在实现多生产者多消费者模式的过程中,保证了软件程序的稳定性和执行效率。其具体方案如下:一种适用于多生产者多消费者模式的数据管理方法,包括:当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断预设队列当前是否符合入列条件,如果是,则将该新数据元素缓存至所述预设队列,如果否,则禁止将该新数据元素缓存至所述预设队列;当多个消费者中的任一消费者需要对所述预设队列中缓存的数据元素进行处理,则利用std::atomic类型,判断所述预设队列当前是否符合出列条件,如果是,则从当前所述预设队列中提取出相应的数据元素,并发送至相应的消费者,以进行相应的数据处理。可选的,所述判断预设队列当前是否符合入列条件的过程,包括:判断所述预设队列当前是否已经存满,如果否,则判定当前所述预设队列符合入列条件,如果是,则判定当前所述预设队列不符合入列条件。可选的,所述判 ...
【技术保护点】
一种适用于多生产者多消费者模式的数据管理方法,其特征在于,包括:当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断预设队列当前是否符合入列条件,如果是,则将该新数据元素缓存至所述预设队列,如果否,则禁止将该新数据元素缓存至所述预设队列;当多个消费者中的任一消费者需要对所述预设队列中缓存的数据元素进行处理,则利用std::atomic类型,判断所述预设队列当前是否符合出列条件,如果是,则从当前所述预设队列中提取出相应的数据元素,并发送至相应的消费者,以进行相应的数据处理。
【技术特征摘要】
1.一种适用于多生产者多消费者模式的数据管理方法,其特征在于,包括:当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断预设队列当前是否符合入列条件,如果是,则将该新数据元素缓存至所述预设队列,如果否,则禁止将该新数据元素缓存至所述预设队列;当多个消费者中的任一消费者需要对所述预设队列中缓存的数据元素进行处理,则利用std::atomic类型,判断所述预设队列当前是否符合出列条件,如果是,则从当前所述预设队列中提取出相应的数据元素,并发送至相应的消费者,以进行相应的数据处理。2.根据权利要求1所述的适用于多生产者多消费者模式的数据管理方法,其特征在于,所述判断预设队列当前是否符合入列条件的过程,包括:判断所述预设队列当前是否已经存满,如果否,则判定当前所述预设队列符合入列条件,如果是,则判定当前所述预设队列不符合入列条件。3.根据权利要求1所述的适用于多生产者多消费者模式的数据管理方法,其特征在于,所述判断所述预设队列当前是否符合出列条件的过程,包括:判断当前所述预设队列中是否存在未处理的数据元素,如果是,则判定当前所述预设队列符合出列条件,如果否,则判定当前所述预设队列不符合出列条件。4.根据权利要求1所述的适用于多生产者多消费者模式的数据管理方法,其特征在于,还包括:对所述预设队列进行实时监视;若监视到当前所述预设队列中的剩余缓存空间容量小于预设容量阈值,则发出相应的容量预警信息。5.根据权利要求1至4任一项所述的适用于多生产者多消费者模式的数据管理方法,其特征在于,所述预设队列为环形缓冲区。6.一种适用于多生产者多消费者模式的数据管理系统,其特征在于,包括:入列管理模块,用于当多个生产者中的任一生产者产生新数据元素,则利用std::atomic类型,判断预设队列当前是否符合入列条件,如果是,则将该新数据元素缓存至所述预设队列,如果否,则禁止将该新数据元素缓存至所述预设队列;出列管理模块,用...
【专利技术属性】
技术研发人员:肖山林,
申请(专利权)人:深圳竹信科技有限公司,
类型:发明
国别省市:广东;44
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。