CN105426261B - 一种跨平台的实时内存通信系统方法 - Google Patents
一种跨平台的实时内存通信系统方法 Download PDFInfo
- Publication number
- CN105426261B CN105426261B CN201510763821.5A CN201510763821A CN105426261B CN 105426261 B CN105426261 B CN 105426261B CN 201510763821 A CN201510763821 A CN 201510763821A CN 105426261 B CN105426261 B CN 105426261B
- Authority
- CN
- China
- Prior art keywords
- data
- read
- channel
- point
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/544—Remote
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Communication Control (AREA)
Abstract
本发明的一种跨平台的实时内存通信系统方法,应用在进程内的数据交互和码流存储中,完全直接利用内存,不但使其在进程内的数据交互使用起来十分类似网络接口,效率非常高,操作非常简单,且不会造成系统性的资源浪费及冲突,系统程序稳定性、有效性及系统资源的利用率均得到大大提高,同时,还研发出了一个十分科学的API接口封装,使视频码流得到了科学的管理方法和科学的使用手段,使其具有代码逻辑,可读性非常强。
Description
技术领域
本发明涉及应用在进程内的数据交互和码流存储的技术领域,尤其涉及一种跨平台的实时内存通信系统方法。
背景技术
很多的通信方案都直接调用系统平台的通信接口,造成通信效率低下,同时各平台通信的差异性很大,最方便的也就是利用网络接口,但同时会造成系统性的浪费及不确定的冲突。而本发明则完全直接利用内存,使在进程内的数据交互使用起来十分类似网络接口,但是效率非常高,操作简单,同时不会造成系统性的资源浪费及冲突等。
同时,现在很多公司的码流管理方式非常多,根据调查结果到目前为止,这些管理方式都没有一个科学的管理方法和使用手段,也没有代码逻辑,每次取出视频码流以后必须要用到stb的方式判断确定后才能知道视频码流的种类、大小和来源等信息,其可读性非常差,操作步骤复杂,低效率。本发明还针对当前安防行业对视频码流的管理研发出一个十分科学的API接口封装,该接口使得视频码流的使用和管理更为科学,更为方便,也更为简单。
发明内容
本发明要解决的技术问题是提供一种完全直接利用内存,不但使其在进程内的数据交互使用起来十分类似网络接口,效率非常高,操作非常简单,且不会造成系统性的资源浪费及冲突,同时,还研发出了一个十分科学的API接口封装,使得视频码流的使用和管理更为科学,更为方便,操作更为简单的实时内存通信系统方法。本发明是通过以下技术方案来实现的:
一种跨平台的实时内存通信系统方法,应用在进程内的数据交互和码流存储中,使用方法步骤如下:
A:跨平台的实时内存通信库,在进程开启之前先对所有的通道进行初始化,需要使用一个线程来创建一个通道,当前期已经创建好通道的,此时便不用再次创建。
B:通道创建好之后,在通道处于通信的过程中写入数据和写点位置,其中,写点位置是指写点在一圈的位置;当写点位置写完大小一圈时需要换圈,其总圈数乘以每圈的大小就是写点能够偏移的圈总数据大小,其中,写点是指写入数据总的偏移大小,总的偏移大小是指一圈以上的写点位置累加起来,当写点写到圈总数据大小的时候,写点归零重新开始写数据。
C:当需要从此通道中读取数据时,首先要确定读点的位置,在读取成功之后将读点的位置偏移读取数据的大小位置。
D:当读取的数据在两圈里面,那么这时候就涉及到换圈,当读取完一圈数据后立即将读取此时的读点位置归零,然后继续在下一圈的零点位置开始读取。
E:在步骤B、C、D的数据中导入读取的类型,读取的类型为数据类型的,读取数据时可选择读取数据的类型。
F:最后摧毁通道,当通道需要重新启用时必须重新创建另一条通道,之后再进行读写操作。
进一步地,重新创建新的一条通道时,读点和写点都必须归零处理。
进一步地,在通道里面读取数据和写入数据时,读点位置应要小于写点位置,当写点位置大于读点位置一圈的情况下,读取数据时需要重置读点位置,使读点位置和写点位置处在同一圈上面的同一点上。
进一步地,在步骤B的通道中写入数据时,当处于写入数据的最后阶段时,圈总数据大小减去写点的最大值后,必须保留一圈的大小,以保证读取数据能跟上写入数据的速度。
进一步地,在C步骤读取数据的时候,通过判断读点、写点的大小来锁定是否能够读取数据,当读点大于写点时,则表示读点位置出错,需要重新定位;当读点小于写点一圈时,读点同样需要重新定位,以保证读点和写点能够正确地在一圈的大小上面读出写入的数据;当读点等于写点时,则代表没有新数据,其他情况便是正常读取数据;在正常读取数据时,当读取的数据出现在不同一圈的情况下,其需在读完当前圈之后立即换圈,以便于读取另外一部分数据,最后把读取的数据拷贝出去。
进一步地,在C步骤读取数据时需要外部重置读点,然后再次把读点的大小传送进入通道来判断,外部重置读点的方式可让读点和写点在同一个位置上。
进一步地,在步骤E中读取数据类型时,在读取码流数据的过程中,当知道读取码流的帧类型或者要重新定位到下一帧数据时,其需要将读取的帧类型标志位值先在外部填好后再传进去通道里面,传进通道里面以后再进行循环读,直到读取数据成功,当通道里面无数据时,则返回显示无数据的标志类型。
进一步地,摧毁通道是指释放通道在创建时候申请的数据大小。
进一步地,进程内的线程创建通道、在通道内读取数据、在通道中写入数据或摧毁通道时都是通过线程锁来控制的,目的是防止多个线程同时创建同一个通道,避免同一个通道出现二次创建以及同一个通道出现二次读写的现象,每个时刻只能允许一个线程对该通道进行操作,避免多个线程同时操作从而导致通道里面的数据混乱,通道在摧毁时也只能由一个线程来释放该通道,每个线程操作完对应的通道以后,才能让另一线程来操作有效的对应通道。
本发明的一种跨平台的实时内存通信系统方法,应用在进程内的数据交互和码流存储中,其有益效果为:在进程内数据交互使用起来非常类似网络接口,使用起来效率非常高效简单,并且不会造成系统性资源的浪费以及冲突,同时,在码流管理中研发出了十分科学的API接口的封装,使码流的使用和管理十分科学,使用方便,操作十分简单,效率高。
附图说明
为了易于说明,本发明由下述的较佳实施例及附图作以详细描述。
图1为本发明的一种跨平台的实时内存通信系统方法的整体结构图。
图2为本发明的一种跨平台的实时内存通信系统方法的通道创建和读写点操作示意图。
图3为本发明的一种跨平台的实时内存通信系统方法的读数据和写入数据的过程示意图。
图4为本发明的一种跨平台的实时内存通信系统方法的多线程操作通道过程的示意图。
图5为本发明的一种跨平台的实时内存通信系统方法的圈的结构示意图。
具体实施方式
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳实施方式。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施方式。相反地,提供这些实施方式的目的是使对本发明的公开内容理解的更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。
本实施例中,参照图1至图5所示,本发明的一种跨平台的实时内存通信系统方法,应用在进程内的数据交互和码流存储中,完全直接利用内存,不但使其在进程内的数据交互使用起来十分类似网络接口,效率非常高,操作非常简单,且不会造成系统性的资源浪费及冲突,同时,还研发出了一个十分科学的API接口封装,使得视频码流的使用和管理更为科学,更为方便,操作更为简单,使用方法步骤如下:
A:跨平台的实时内存通信库,在进程开启之前先对所有的通道进行初始化,需要使用一个线程来创建一个通道,当前期已经创建好通道的,此时便不用再次创建。
B:通道创建好之后,在通道处于通信的过程中写入数据和写点位置,其中,写点位置是指写点在一圈的位置;当写点位置写完大小一圈时需要换圈,其总圈数乘以每圈的大小就是写点能够偏移的圈总数据大小,其中,写点是指写入数据总的偏移大小,总的偏移大小是指一圈以上的写点位置累加起来,当写点写到圈总数据大小的时候,写点归零重新开始写数据。
C:当需要从此通道中读取数据时,首先要确定读点的位置,在读取成功之后将读点的位置偏移读取数据的大小位置。
D:当读取的数据在两圈里面,那么这时候就涉及到换圈,当读取完一圈数据后立即将读取此时的读点位置归零,然后继续在下一圈的零点位置开始读取。
E:在步骤B、C、D的数据中导入读取的类型,读取的类型为数据类型的,读取数据时可选择读取数据的类型。
F:最后摧毁通道,当通道需要重新启用时必须重新创建另一条通道,之后再进行读写操作。
在其中一实施例中,重新创建新的一条通道时,读点和写点都必须归零处理。
在其中一实施例中,在通道里面读取数据和写入数据时,读点位置应要小于写点位置,当写点位置大于读点位置一圈的情况下,读取数据时需要重置读点位置,使读点位置和写点位置处在同一圈上面的同一点上。
在其中一实施例中,在步骤B的通道中写入数据时,当处于写入数据的最后阶段时,圈总数据大小减去写点的最大值后,必须保留一圈的大小,这是由于写点大于圈总数据大小以后要做清零处理,即重新计算,当读点还未达到最大的圈总数据大小时会出现写点清零而读点还未到达清零的目的,所以当写点处于读点一圈的大小位置时要等待读点也到达最大的圈总数据大小的位置,以保证读取数据能跟上写入数据的速度。
在其中一实施例中,在C步骤读取数据的时候,通过判断读点、写点的大小来锁定是否能够读取数据,当读点大于写点时,则表示读点位置出错,需要重新定位;当读点小于写点一圈时,读点同样需要重新定位,以保证读点和写点能够正确地在一圈的大小上面读出写入的数据;当读点等于写点时,则代表没有新数据,其他情况便是正常读取数据;在正常读取数据时,当读取的数据出现在不同一圈的情况下,其需在读完当前圈之后立即换圈,以便于读取另外一部分数据,最后把读取的数据拷贝出去。
在其中一实施例中,在C步骤读取数据时需要外部重置读点,然后再次把读点的大小传送进入通道来判断,外部重置读点的方式可让读点和写点在同一个位置上。
在其中一实施例中,在步骤E中读取数据类型时,在读取码流数据的过程中,当知道读取码流的帧类型或者要重新定位到下一帧数据时,其需要将读取的帧类型标志位值先在外部填好后再传进去通道里面,传进通道里面以后再进行循环读,直到读取数据成功,当通道里面无数据时,则返回显示无数据的标志类型。
在其中一实施例中,摧毁通道是指释放通道在创建时候申请的数据大小。
在其中一实施例中,进程内的线程创建通道、在通道内读取数据、在通道中写入数据或摧毁通道时都是通过线程锁来控制的,目的是防止多个线程同时创建同一个通道,避免同一个通道出现二次创建以及同一个通道出现二次读写的现象,每个时刻只能允许一个线程对该通道进行操作,避免多个线程同时操作从而导致通道里面的数据混乱,通道在摧毁时也只能由一个线程来释放该通道,每个线程操作完对应的通道以后,才能让另一线程来操作有效的对应通道。
针对视频码流数据非常大的问题,本发明设置有专门存储大数据的视频码流,使其能将对应的视频码流放到对应的通道中,任何线程都可以从里面取出,并且取出的视频码流能清楚地显示其大小、来源和种类等情况,每条通道均具有显示生成码流的具体信息,使视频码流的管理十分科学,一目了然,解决了传统每次取出视频码流以后必须要用到stb的方式判断确定后才能知道视频码流的种类、大小和来源等信息,使其具有代码逻辑,可读性非常强,简化了操作步骤,节约了时间,效率高,本发明还克服了造成系统性的资源浪费及冲突的问题,系统程序稳定性、有效性及系统资源的利用率均得到大大提高。
上述实施例,只是本发明的一个实例,并不是用来限制本发明的实施与权利范围,凡与本发明权利要求所述内容相同或等同的技术方案,均应包括在本发明保护范围内。
Claims (7)
1.一种跨平台的实时内存通信系统方法,应用在进程内的数据交互和码流存储中,其特征在于:使用方法步骤如下:
A:跨平台的实时内存通信库,在进程开启之前先对所有的通道进行初始化,需要使用一个线程来创建一个通道,当前期已经创建好通道的,此时便不用再次创建;
B:通道创建好之后,在通道处于通信的过程中写入数据和写点位置,其中,写点位置是指写点在一圈的位置;当写点位置写完大小一圈时需要换圈,其总圈数乘以每圈的大小就是写点能够偏移的圈总数据大小,其中,写点是指写入数据总的偏移大小,当写点写到圈总数据大小的时候,写点归零重新开始写数据;
C:当需要从此通道中读取数据时,首先要确定读点的位置,在读取成功之后将读点的位置偏移读取数据的大小位置;
D:当读取的数据在两圈里面,那么这时候就涉及到换圈,当读取完一圈数据后立即将读取此时的读点位置归零,然后继续在下一圈的零点位置开始读取;
E:在步骤B、C、D的数据中导入读取的类型,读取的类型为数据类型的,读取数据时可选择读取数据的类型;
F:最后摧毁通道,当通道需要重新启用时必须重新创建另一条通道,之后再进行读写操作;
重新创建新的一条通道时,读点和写点都必须归零处理;
在通道里面读取数据和写入数据时,读点位置应要小于写点位置,当写点位置大于读点位置一圈的情况下,读取数据时需要重置读点位置,使读点位置和写点位置处在同一圈上面的同一点上。
2.根据权利要求1所述的一种跨平台的实时内存通信系统方法,其特征在于:在步骤B的通道中写入数据时,当处于写入数据的最后阶段时,圈总数据大小减去写点的最大值后,必须保留一圈的大小,以保证读取数据能跟上写入数据的速度。
3.根据权利要求1所述的一种跨平台的实时内存通信系统方法,其特征在于:在C步骤读取数据的时候,通过判断读点、写点的大小来锁定是否能够读取数据,当读点大于写点时,则表示读点位置出错,需要重新定位;当读点小于写点一圈时,读点同样需要重新定位,以保证读点和写点能够正确地在一圈的大小上面读出写入的数据;当读点等于写点时,则代表没有新数据,其他情况便是正常读取数据;在正常读取数据时,当读取的数据出现在不同一圈的情况下,其需在读完当前圈之后立即换圈,以便于读取另外一部分数据,最后把读取的数据拷贝出去。
4.根据权利要求3所述的一种跨平台的实时内存通信系统方法,其特征在于:在C步骤读取数据时需要外部重置读点,然后再次把读点的大小传送进入通道来判断,外部重置读点的方式可让读点和写点在同一个位置上。
5.根据权利要求1所述的一种跨平台的实时内存通信系统方法,其特征在于:在步骤E中读取数据类型时,在读取码流数据的过程中,当知道读取码流的帧类型或者要重新定位到下一帧数据时,其需要将读取的帧类型标志位值先在外部填好后再传进去通道里面,传进通道里面以后再进行循环读,直到读取数据成功,当通道里面无数据时,则返回显示无数据的标志类型。
6.根据权利要求1所述的一种跨平台的实时内存通信系统方法,其特征在于:摧毁通道是指释放通道在创建时候申请的数据大小。
7.根据权利要求2、3和6中任一项所述的一种跨平台的实时内存通信系统方法,其特征在于:进程内的线程创建通道、在通道内读取数据、在通道中写入数据或摧毁通道时都是通过线程锁来控制的,目的是防止多个线程同时创建同一个通道,避免同一个通道出现二次创建以及同一个通道出现二次读写的现象,每个时刻只能允许一个线程对该通道进行操作,避免多个线程同时操作从而导致通道里面的数据混乱,通道在摧毁时也只能由一个线程来释放该通道,每个线程操作完对应的通道以后,才能让另一线程来操作有效的对应通道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510763821.5A CN105426261B (zh) | 2015-11-11 | 2015-11-11 | 一种跨平台的实时内存通信系统方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510763821.5A CN105426261B (zh) | 2015-11-11 | 2015-11-11 | 一种跨平台的实时内存通信系统方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105426261A CN105426261A (zh) | 2016-03-23 |
CN105426261B true CN105426261B (zh) | 2019-04-30 |
Family
ID=55504483
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510763821.5A Active CN105426261B (zh) | 2015-11-11 | 2015-11-11 | 一种跨平台的实时内存通信系统方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105426261B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113824973A (zh) * | 2021-08-04 | 2021-12-21 | 杭州星犀科技有限公司 | 多平台直推推流的方法、系统、电子装置和存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6131113A (en) * | 1998-02-24 | 2000-10-10 | International Business Machines Corporation | Managing a shared resource in a multi-processor system |
US6304924B1 (en) * | 1999-02-02 | 2001-10-16 | International Business Machines Corporation | Two lock-free, constant-space, multiple-(impure)-reader, single-writer structures |
CN102789458A (zh) * | 2011-05-18 | 2012-11-21 | 腾讯科技(深圳)有限公司 | 一种影像文件处理方法及系统 |
CN103150220A (zh) * | 2011-12-07 | 2013-06-12 | 腾讯科技(深圳)有限公司 | 进程间的通信方法和通信系统 |
CN103176852A (zh) * | 2011-12-22 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
-
2015
- 2015-11-11 CN CN201510763821.5A patent/CN105426261B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6131113A (en) * | 1998-02-24 | 2000-10-10 | International Business Machines Corporation | Managing a shared resource in a multi-processor system |
US6304924B1 (en) * | 1999-02-02 | 2001-10-16 | International Business Machines Corporation | Two lock-free, constant-space, multiple-(impure)-reader, single-writer structures |
CN102789458A (zh) * | 2011-05-18 | 2012-11-21 | 腾讯科技(深圳)有限公司 | 一种影像文件处理方法及系统 |
CN103150220A (zh) * | 2011-12-07 | 2013-06-12 | 腾讯科技(深圳)有限公司 | 进程间的通信方法和通信系统 |
CN103176852A (zh) * | 2011-12-22 | 2013-06-26 | 腾讯科技(深圳)有限公司 | 一种用于进程间通信的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105426261A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Kaiser et al. | Strong logic for weak memory: Reasoning about release-acquire consistency in Iris | |
CN107291558B (zh) | 一种应用程序接口死锁监控方法和装置 | |
US8694962B2 (en) | Aspect-oriented parallel programming language extensions | |
CN112119423B (zh) | 形式化验证的系统和方法 | |
CN109309599B (zh) | 一种基于路灯硬件平台实现物联网设备高并发通信的方法 | |
US20150040140A1 (en) | Consuming Ordered Streams of Messages in a Message Oriented Middleware | |
US9146736B2 (en) | Dynamically updating code without requiring processes to restart | |
US20160162341A1 (en) | Reader-writer lock | |
CN110188110A (zh) | 一种构建分布式锁的方法及装置 | |
CN107423403A (zh) | 一种基于分布式文件系统的融合锁管理方法和系统 | |
CN112104403B (zh) | 基于消息队列的多线程遥感卫星基带数据处理方法及装置 | |
CN109478148B (zh) | 基于工作流程的对象析构 | |
CN105426261B (zh) | 一种跨平台的实时内存通信系统方法 | |
US10313477B2 (en) | System and method for use of a non-blocking process with a resource pool in a computing environment | |
US9454382B2 (en) | Verification of UML state machines | |
CN112559210A (zh) | 一种基于rtx实时系统的共享资源读写互斥方法 | |
CN110489420A (zh) | 一种基于区块链的数据处理方法及装置 | |
US7631092B2 (en) | System and method for providing a pluggable message store | |
WO2019019957A1 (zh) | 一种发送电子券的方法及装置 | |
CN106445837A (zh) | 一种嵌入式装置历史记录存储与加载管理实现方法及装置 | |
CN109739443A (zh) | 一种ssd混合读写的方法、装置、设备及存储介质 | |
CN112733499A (zh) | 序列号生成方法和装置 | |
CN103927345B (zh) | 一种jsp标签嵌套的方法及装置 | |
CN107589978B (zh) | 一种Flash中页面刷新方法及装置 | |
CN107818017A (zh) | 多线程计算系统及其数据处理方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |