一种进程间数据传递的方法和系统技术方案

技术编号:16188021 阅读:31 留言:0更新日期:2017-09-12 11:21
本发明专利技术涉及一种进程间数据传递的方法和系统。所述方法包括:S1,建数据库表,在数据库表中插入空控制记录和满控制记录,并分别挂锁;S2,插入和处理数据记录前判断数据记录数量的状态;S3,当数据记录数量达到下限值则消费者进程暂停并执行S4;当数据记录数量达到上限值则生产者进程暂停并执行S5;当数据记录数量在下限值和上限值间则生产者进程插入,消费者进程处理;S4,生产者进程对空控制记录上的锁解锁以通知消费者进程并执行S2;S5,消费者进程对满控制记录上的锁进行解锁以通知生产者进程并执行S2。本发明专利技术实现了节省CPU资源,提升传递速度。

Method and system for inter process data transfer

The invention relates to a method and a system for inter process data transmission. The method comprises the following steps: S1, built the database table, insert an empty control record and full control records in a database table, and S2, and insert the padlock; processing data recording before judgment data record number; S3, when the data record number reached the lower limit will temporarily stop the consumer process and Implementation of the S4 when the data record; the number of the maximum number of producers to suspend a process and the implementation of S5; when the data is inserted in the process of recording the number of producers and the upper limit of the lower value, the consumer process processing; S4, producer process air control records of the lock is unlocked to inform consumers the process and implementation of S2; S5, the consumer process of full control on record lock unlock to inform the process and implementation of S2 for the producer. The invention realizes the saving of CPU resources and the promotion of transmission speed.

【技术实现步骤摘要】
一种进程间数据传递的方法和系统
本专利技术属于数据处理领域,尤其涉及一种进程间数据传递的方法和系统。
技术介绍
现有的利用数据库表实现进程间数据传递的方法,均采用生产者进程向数据库表中插入数据记录,消费者进程定时扫描数据库表,把读到的数据记录逐条分析,分析成功后从数据库表中删除。在数据库表内没有数据记录时,消费者进程采用以下两种方式进行处理:方式一是:消费者进程不断重复扫描数据库表,生产者进程一旦对没有数据记录的数据库表成功插入数据记录后,消费者进程能够立刻发现,并开始读取数据记录,进行分析等,但消费者进程在发现数据库表内没有数据记录过程中,消费者进程是不断扫描数据库表,因而存在很高的CPU占用和消费者进程空转的问题。方式二:消费者进程在发现数据库表内没有数据记录时,等待一段时间,例如等待5秒,5秒时间到后再次扫描数据库表。这种方式能够有效解决方式一中存在的高CPU占用和消费者进程空转的问题,但是生产者进程一旦向没有数据记录的数据库表内插入数据记录时,消费者进程是需要在等待时间结束后才能发现已插入的数据记录并读取的,造成消费者进程对数据库表中的数据记录感知灵敏性差。同样的,在数据库表内记录满时,现有的利用数据库表实现进程间数据传递的方法也存在高CPU占用、生产者进程空转和生产者对数据库表中的数据记录感知灵敏度差的问题。
技术实现思路
本专利技术所要解决的技术问题是针对现有技术的不足,提供一种进程间数据传递的方法和系统。本专利技术解决上述技术问题的技术方案如下:一种进程间数据传递的方法,包括如下步骤:S1,建立用于传递生产者进程和消费者进程间数据记录的数据库表,预先在所述数据库表中插入空控制记录和满控制记录,并分别在空控制记录和满控制记录上挂锁;S2,生产者进程插入数据记录前和消费者进程处理数据记录前判断数据库表中数据记录数量的状态;S3,当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停,并执行S4;当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停,并执行S5;当判定所述数据记录数量在下限值和上限值之间时,则生产者进程插入数据记录,同时消费者进程处理数据记录;S4,生产者进程对空控制记录上挂的锁进行解锁以通知消费者进程,消费者进程接收通知并执行S2;S5,消费者进程对满控制记录上挂的锁进行解锁以通知生产者进程,生产者进程接收通知并执行S2。本专利技术的有益效果是:通过判定数据记录数量是否达到上限值或下限值,从而暂停生产者进程或是消费者进程。通过消费者进程对满控制记录上挂的锁进行解锁,实现生产者进程暂停被解除,由消费者进程主动通知生产者进程继续;生产者进程对空控制记录上挂的锁进行解锁,实现消费者进程暂停被解除,由生产者进程主动通知消费者进程继续。保留了利用数据库表进行数据传递的方式,降低数据传递时对CPU的占用,节省CPU资源,避免进程空转,提高进程对数据库表内的数据记录感知灵敏度,避免进程的无知等待,减少延迟,提升数据传递速度,提出了一个新的数据传递方法。在上述技术方案的基础上,本专利技术还可以做如下改进:进一步,所述当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停包括:当消费者进程判定所述数据记录数量达到下限值时,消费者进程查看空控制记录上是否挂有锁,挂有锁则消费者进程暂停;所述当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停包括:当生产者进程判定所述数据记录数量达到上限值时,生产者进程查看满控制记录上是否挂有锁,挂有锁则生产者进程暂停。进一步,所述S4步骤包括:S41,生产者进程成功插入一条数据记录时,生产者进程对空控制记录上挂的锁进行解锁;S42,消费者进程对空控制记录进行挂锁并立即解锁,消费者进程继续并执行S2;S43,生产者进程对空控制记录进行挂锁。进一步,所述S5步骤包括:S51,消费者进程成功处理一条数据记录时,消费者进程对满控制记录上挂的锁进行解锁;S52,生产者进程对满控制记录进行挂锁并立即解锁,生产者进程继续并执行S2;S53,消费者进程对满控制记录进行挂锁。进一步,所述生产者进程判定所述数据记录数量达到上限值包括:预先设置数据库表中数据记录数量的上限值;生产者进程对当前时刻的数据库表中数据记录数量进行统计,得到统计值;当生产者进程确定所述统计值大于或等于所述上限值时,则生产者进程判定所述数据记录数量达到上限值。进一步,所述消费者进程判定所述数据记录数量达到下限值包括:消费者进程对当前时刻的数据库表中数据记录数量进行统计,得到统计值;当消费者进程确定所述统计值为零时,则消费者进程判定所述数据记录数量达到下限值。本专利技术解决上述技术问题的技术方案如下:一种进程间数据传递的系统,包括:建立模块,用于建立数据库表,所述数据库表用于传递生产者进程和消费者进程间数据记录,预先在所述数据库表中插入空控制记录和满控制记录,并分别在空控制记录和满控制记录上挂锁;判断模块,用于生产者进程插入数据记录前和消费者进程处理数据记录前判断数据库表中数据记录数量的状态;初处理模块,用于当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停,并调用第一再处理模块;当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停,并调用第二再处理模块;当判定所述数据记录数量在下限值和上限值之间时,则生产者进程插入数据记录,同时消费者进程处理数据记录;第一再处理模块,用于生产者进程对空控制记录上挂的锁进行解锁以通知消费者进程,消费者进程接收通知并调用判断模块;第二再处理模块,用于消费者进程对满控制记录上挂的锁进行解锁以通知生产者进程,生产者进程接收通知并调用判断模块。本专利技术的有益效果是:通过判定数据记录数量是否达到上限值或下限值,从而暂停生产者进程或是消费者进程。通过消费者进程对满控制记录上挂的锁进行解锁,实现生产者进程暂停被解除,由消费者进程主动通知生产者进程继续;生产者进程对空控制记录上挂的锁进行解锁,实现消费者进程暂停被解除,由生产者进程主动通知消费者进程继续。保留了利用数据库表进行数据传递的方式,降低数据传递时对CPU的占用,节省CPU资源,避免进程空转,提高进程对数据库表内的数据记录感知灵敏度,避免进程的无知等待,减少延迟,提升数据传递速度,提出了一个新的数据传递系统。在上述技术方案的基础上,本专利技术还可以做如下改进:进一步,所述初处理模块中用于当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停包括:当消费者进程判定所述数据记录数量达到下限值时,消费者进程查看空控制记录上是否挂有锁,挂有锁则消费者进程暂停;所述初处理模块中用于当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停包括:当生产者进程判定所述数据记录数量达到上限值时,生产者进程查看满控制记录上是否挂有锁,挂有锁则生产者进程暂停。进一步,第一再处理模块包括:第一解锁模块,用于生产者进程成功插入一条数据记录时,生产者进程对空控制记录上挂的锁进行解锁;第一通知模块,用于消费者进程对空控制记录进行挂锁并立即解锁,消费者进程继续并调用判断模块;第一挂锁模块,用于生产者进程对空控制记录进行挂锁。进一步,第二再处理模块包括:第二解锁模块,用于消费者进程成功处理一条数据记录时,消费者进程对满控本文档来自技高网...
一种进程间数据传递的方法和系统

【技术保护点】
一种进程间数据传递的方法,其特征在于,包括如下步骤:S1,建立用于传递生产者进程和消费者进程间数据记录的数据库表,预先在所述数据库表中插入空控制记录和满控制记录,并分别在空控制记录和满控制记录上挂锁;S2,生产者进程插入数据记录前和消费者进程处理数据记录前判断数据库表中数据记录数量的状态;S3,当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停,并执行S4;当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停,并执行S5;当判定所述数据记录数量在下限值和上限值之间时,则生产者进程插入数据记录,同时消费者进程处理数据记录;S4,生产者进程对空控制记录上挂的锁进行解锁以通知消费者进程,消费者进程接收通知并执行S2;S5,消费者进程对满控制记录上挂的锁进行解锁以通知生产者进程,生产者进程接收通知并执行S2。

【技术特征摘要】
1.一种进程间数据传递的方法,其特征在于,包括如下步骤:S1,建立用于传递生产者进程和消费者进程间数据记录的数据库表,预先在所述数据库表中插入空控制记录和满控制记录,并分别在空控制记录和满控制记录上挂锁;S2,生产者进程插入数据记录前和消费者进程处理数据记录前判断数据库表中数据记录数量的状态;S3,当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停,并执行S4;当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停,并执行S5;当判定所述数据记录数量在下限值和上限值之间时,则生产者进程插入数据记录,同时消费者进程处理数据记录;S4,生产者进程对空控制记录上挂的锁进行解锁以通知消费者进程,消费者进程接收通知并执行S2;S5,消费者进程对满控制记录上挂的锁进行解锁以通知生产者进程,生产者进程接收通知并执行S2。2.根据权利要求1所述的进程间数据传递的方法,其特征在于,所述当消费者进程判定所述数据记录数量达到下限值时,则消费者进程暂停包括:当消费者进程判定所述数据记录数量达到下限值时,消费者进程查看空控制记录上是否挂有锁,挂有锁则消费者进程暂停;所述当生产者进程判定所述数据记录数量达到上限值时,则生产者进程暂停包括:当生产者进程判定所述数据记录数量达到上限值时,生产者进程查看满控制记录上是否挂有锁,挂有锁则生产者进程暂停。3.根据权利要求2所述的进程间数据传递的方法,其特征在于,所述S4步骤包括:S41,生产者进程成功插入一条数据记录时,生产者进程对空控制记录上挂的锁进行解锁;S42,消费者进程对空控制记录进行挂锁并立即解锁,消费者进程继续并执行S2;S43,生产者进程对空控制记录进行挂锁。4.根据权利要求3所述的进程间数据传递的方法,其特征在于,所述S5步骤包括:S51,消费者进程成功处理一条数据记录时,消费者进程对满控制记录上挂的锁进行解锁;S52,生产者进程对满控制记录进行挂锁并立即解锁,生产者进程继续并执行S2;S53,消费者进程对满控制记录进行挂锁。5.根据权利要求1-4任一项所述的进程间数据传递的方法,其特征在于,所述生产者进程判定所述数据记录数量达到上限值包括:预先设置数据库表中数据记录数量的上限值;生产者进程对当前时刻的数据库表中数据记录数量进行统计,得到统计值;当生产者进程确定所述统计值大于或等于所述上限值时,则生产者进程判定所述数据记录数量达到上限值。6.根据权利要求5述的进程间数据传递的方法,其特征在于,所述消...

【专利技术属性】
技术研发人员:张奇伟
申请(专利权)人:北京思特奇信息技术股份有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1