CN107491355A - 一种基于共享内存的进程间功能调用方法及装置 - Google Patents
一种基于共享内存的进程间功能调用方法及装置 Download PDFInfo
- Publication number
- CN107491355A CN107491355A CN201710708007.2A CN201710708007A CN107491355A CN 107491355 A CN107491355 A CN 107491355A CN 201710708007 A CN201710708007 A CN 201710708007A CN 107491355 A CN107491355 A CN 107491355A
- Authority
- CN
- China
- Prior art keywords
- data
- write
- internal memory
- shared drive
- thread
- 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.)
- Pending
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/542—Event management; Broadcasting; Multicasting; Notifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- 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/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Multi Processors (AREA)
Abstract
本发明提供了一种基于共享内存的进程间功能调用方法及装置,该方法包括:预先设置服务进程和客户端进程;启动所述服务进程,并利用启动的所述服务进程,创建共享内存;利用所述服务进程中的监控线程监控所述共享内存;接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;利用所述客户端进程将所述待处理数据存入所述共享内存;当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。本方案能降低***的性能消耗,尤其适合性能有限的嵌入式设备。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种基于共享内存的进程间功能调用方法及装置。
背景技术
进程是***进行资源分配和调度的基本单位,各个进程之间的在运行时,需要利用其它进程的某些功能,因此进程间的功能调用十分重要。
目前,各个进程在运行前,一般在不同的服务端进行注册。在进程运行期间进行功能调用时,需要从待调用进程对应的服务端获取相应的注册信息,根据获取的注册信息,再对待调用进程的相关功能进行调用。
在此过程中,需要从不同服务端获取待调用进程的注册信息,即有大量的进程间信息进行传递,这导致***的性能消耗较大。
发明内容
本发明实施例提供了一种基于共享内存的进程间功能调用方法及装置,能降低***的性能消耗。
第一方面,本发明实施例提供了一种基于共享内存的进程间功能调用方法,包括:
预先设置服务进程和客户端进程;
启动所述服务进程,并利用启动的所述服务进程,创建共享内存;
利用所述服务进程中的监控线程监控所述共享内存;
接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;
利用所述客户端进程将所述待处理数据存入所述共享内存;
当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;
利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。
优选地,
在所述启动所述服务进程,利用启动的所述服务进程,创建共享内存之后,进一步包括:
利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应;
所述利用所述客户端进程将所述待处理数据存入所述共享内存,包括:
当接收到所述数据处理请求时,打开所述存入信号量,并利用所述客户端进程将所述待处理数据存入所述写入内存;
所述当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数,包括:
当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数;
所述利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据,包括:
在所述写入内存中,利用所述目标函数对所述待处理数据进行处理;
打开所述导出信号量,利用所述监控线程将所述处理后的数据写入所述输出内存。
优选地,
所述利用所述客户端进程将所述待处理数据存入所述写入内存,包括:
利用所述客户端进程将所述待处理数据进行序列化,并将序列化后的所述待处理数据写入所述写入内存;
所述当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数,包括:
利用所述监控线程对读取的所述待处理数据进行反序列化,并调用所述目标函数;
所述利用所述监控线程将所述处理后的数据写入所述输出内存,包括:
利用所述监控线程将所述处理后的数据进行序列化,并将序列化后的所述处理后的数据写入所述输出内存。
优选地,
在所述利用所述客户端进程将所述待处理数据存入所述写入内存之前,进一步包括:
利用所述服务进程中的网络线程监听传输控制协议;
当所述网络线程监听到所述数据处理请求通过所述传输控制协议进行传输时,利用所述网络线程接收所述数据处理请求,并执行所述利用所述客户端进程将所述待处理数据存入所述写入内存。
优选地,
在所述利用所述监控线程将所述处理后的数据写入所述输出内存之后,进一步包括:
利用所述网络线程将所述输出内存中的所述处理后的数据经所述传输控制协议进行输出,并执行所述利用所述网络线程监听传输控制协议。
优选地,
进一步包括:设置消息广播进程;
在所述利用启动的所述服务进程,创建共享内存之后,进一步包括:
确定所述服务进程对应的至少一个消息监听线程;
将所述至少一个消息监听线程在所述共享内存中进行注册,利用所述共享内存存储所述至少一个消息监听线程分别对应的注册信息;
当所述客户端进程确定出所述数据处理请求进一步携带有广播消息时,将所述广播消息写入所述共享内存;
利用所述消息广播进程,根据所述注册信息,将所述广播消息分别发送给各个所述消息监听线程,并利用所述监听线程对所述广播消息进行广播。
第二方面,本发明实施例提供了一种基于共享内存的进程间功能调用装置,包括:设置单元、处理单元和调用单元;其中,
所述设置单元,用于预先设置服务进程和客户端进程;启动所述服务进程,并利用启动的所述服务进程,创建共享内存;利用所述服务进程中的监控线程监控所述共享内存;
所述处理单元,用于接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;利用所述客户端进程将所述待处理数据存入所述共享内存;
所述调用单元,用于当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。
优选地,
所述设置单元,进一步用于利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应;
所述处理单元,用于当接收到所述数据处理请求时,打开所述存入信号量,并利用所述客户端进程将所述待处理数据存入所述写入内存;
所述调用单元,用于当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数;在所述写入内存中,利用所述目标函数对所述待处理数据进行处理;打开所述导出信号量,利用所述监控线程将所述处理后的数据写入所述输出内存。
优选地,
所述处理单元,用于利用所述客户端进程将所述待处理数据进行序列化,并将序列化后的所述待处理数据写入所述写入内存;
所述调用单元,用于利用所述监控线程对读取的所述待处理数据进行反序列化,并调用所述目标函数,并将所述处理后的数据进行序列化,将序列化后的所述处理后的数据写入所述输出内存。
优选地,
所述处理单元,用于利用所述服务进程中的网络线程监听传输控制协议;当所述网络线程监听到所述数据处理请求通过所述传输控制协议进行传输时,利用所述网络线程接收所述数据处理请求,并执行所述利用所述客户端进程将所述待处理数据存入所述写入内存。
本发明实施例提供了一种基于共享内存的进程间功能调用方法及装置,利用服务进程创建共享内存,并利用监控线程监控创建的共享内存,当接收到数据处理内存时,利用客户端进程将待处理数据写入共享内存中。而监控线程监控到共享内存有数据存入时,则调用相应的目标函数,以利用目标函数对待处理数据进行处理,并输出处理后的数据。由此,基于共享内存技术提供各个进程间的通信支持,方法简单而且高效,降低了***的性能消耗。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一个实施例提供的一种基于共享内存的进程间功能调用方法的流程图;
图2是本发明另一个实施例提供的一种基于共享内存的进程间功能调用方法的流程图;
图3是本发明一个实施例提供的一种基于共享内存的进程间功能调用装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于共享内存的进程间功能调用方法,该方法可以包括以下步骤:
步骤101:预先设置服务进程和客户端进程;
步骤102:启动所述服务进程,并利用启动的所述服务进程,创建共享内存;
步骤103:利用所述服务进程中的监控线程监控所述共享内存;
步骤104:接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;
步骤105:利用所述客户端进程将所述待处理数据存入所述共享内存;
步骤106:当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;
步骤107:利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。
上述实施例中,利用服务进程创建共享内存,并利用监控线程监控创建的共享内存,当接收到数据处理内存时,利用客户端进程将待处理数据写入共享内存中。而监控线程监控到共享内存有数据存入时,则调用相应的目标函数,以利用目标函数对待处理数据进行处理,并输出处理后的数据。由此,基于共享内存技术提供各个进程间的通信支持,方法简单而且高效,降低了***的性能消耗。
本发明一个实施例中,在步骤102之后,可以进一步包括:
利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应;
步骤105的具体实施方式,可以包括:
当接收到所述数据处理请求时,打开所述存入信号量,并利用所述客户端进程将所述待处理数据存入所述写入内存;
步骤106的具体实施方式,可以包括:
当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数;
步骤107的具体实施方式,可以包括:
在所述写入内存中,利用所述目标函数对所述待处理数据进行处理;
打开所述导出信号量,利用所述监控线程将所述处理后的数据写入所述输出内存。
在本实施例中,将共享内存分为写入内存(in部分)和输出内存(out部分),并共享内存中初始化存入信号量(sem_in)和导出信号量(sem_out),其中,in部分的数据写入与读取通过sem_in信号量进行同步,out部分的数据输出通过sem_out信号量进行同步。接收到数据处理请求后,打开sem_in信号量,利用客户端进程将待处理数据写入共享内存中的in部分,此时监控线程会监控到写入内存有数据存入,则其从写入内存中读取相应的待处理数据,并调用相应的目标函数对待处理数据进行处理,读取完成后释放sem_in信号量,并打开sem_out信号量,再利用监控线程将处理后的的数据写入out部分,以输出处理后的数据。由此,通过将共享内存分为in部分和out部分,并设置相应的sem_in信号量和sem_out信号量,使数据的写入、读取和输出可根据相应的信号量在不同部分的共享内存中有序进行,提高数据处理效率的同时,进一步降低***的性能消耗。
本发明一个实施例中,所述利用所述客户端进程将所述待处理数据存入所述写入内存,包括:
利用所述客户端进程将所述待处理数据进行序列化,并将序列化后的所述待处理数据写入所述写入内存;
所述当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数,包括:
利用所述监控线程对读取的所述待处理数据进行反序列化,并调用所述目标函数;
所述利用所述监控线程将所述处理后的数据写入所述输出内存,包括:
利用所述监控线程将所述处理后的数据进行序列化,并将序列化后的所述处理后的数据写入所述输出内存。
在这里,客户端进程在向in部分写入数据时,先将数据进行序列化,然后监控线程从in部分读取数据时,则依次将数据进行反序列化。在利用调用的目标函数对待处理数据进行处理后,在将函数返回的数据进行序列化之后,返回out部分。由此,在共享内存中的数据均是序列号后的数据,有利于数据的传输,从而进一步降低***的性能消耗。
本发明一个实施例中,在所述利用所述客户端进程将所述待处理数据存入所述写入内存之前,可以进一步包括:
利用所述服务进程中的网络线程监听传输控制协议;
当所述网络线程监听到所述数据处理请求通过所述传输控制协议进行传输时,利用所述网络线程接收所述数据处理请求,并执行所述利用所述客户端进程将所述待处理数据存入所述写入内存。
在这里,当网络线程监控到数据处理请求通过传输控制协议(TransmissionControl Protocol,TCP)进行传输时,说明数据处理请求通过远程传输,此时通过网络线程接收数据处理请求,即启动网络线程接收远程请求的功能。
本发明一个实施例中,在所述利用所述监控线程将所述处理后的数据写入所述输出内存之后,可以进一步包括:
利用所述网络线程将所述输出内存中的所述处理后的数据经所述传输控制协议进行输出,并执行所述利用所述网络线程监听传输控制协议。
当网络线程接收到远程请求,将接收到的请求数据写入in部分共享内存后,等待监控线程将处理后的数据返回out部分,然后将out部分中的处理后的数据通过TCP返回,之后关闭连接并继续监听TCP。由此,以简单高效的方式实现了网络线程的远程功能,进一步降低了***的性能消耗。通过此方案,***可以通过较小的开销实现进程间的交互,并且支持远程的调用,这尤其适合性能有限的嵌入式设备,以及对设备的远程控制。
本发明一个实施例中,可以进一步包括:设置消息广播进程;
在步骤101之后,可以进一步包括:
确定所述服务进程对应的至少一个消息监听线程;
将所述至少一个消息监听线程在所述共享内存中进行注册,利用所述共享内存存储所述至少一个消息监听线程分别对应的注册信息;
当所述客户端进程确定出所述数据处理请求进一步携带有广播消息时,将所述广播消息写入所述共享内存;
利用所述消息广播进程,根据所述注册信息,将所述广播消息分别发送给各个所述消息监听线程,并利用所述监听线程对所述广播消息进行广播。
在创建出共享内存之后,通过共享内存存储服务进程对应的各个消息监听线程的注册信息,然后可通过消息广播进程维护此共享内存,当监控线程监控到写入此共享内存的数据中有广播消息时,即客户端进程写入的数据中有广播消息时,说明客户端进程需要发送广播消息,此时调用消息广播进程,将广播消息分别发送给各个消息监听线程,以利用消息监听进程对广播消息进行广播。由此实现了进程的广播功能,方法简单高效,有利于降低***吸能消耗。
如图2所示,本发明实施例提供了一种基于共享内存的进程间功能调用方法,该方法可以包括以下步骤:
步骤201:设置服务进程和客户端进程。
步骤202:启动所述服务进程,利用启动的所述服务进程,创建共享内存,并利用所述服务进程中的监控线程监控所述共享内存。
步骤203:利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应。
在这里,将共享内存分为写入内存(in部分)和输出内存(out部分),并共享内存中初始化存入信号量(sem_in)和导出信号量(sem_out),其中,in部分的数据写入与读取通过sem_in信号量进行同步,out部分的数据输出通过sem_out信号量进行同步。
步骤204:利用所述服务进程中的网络线程监听TCP,当所述网络线程监听到通过TCP接收到数据请求时,打开所述存入信号量,并利用所述客户端进程将所述数据处理请求中携带的待处理数据进行序列化,将序列化后的待处理数据存入所述写入内存。
当网络线程监控到数据处理请求通过TCP进行传输时,说明数据处理请求通过远程传输,此时通过网络线程接收数据处理请求,即启动网络线程接收远程请求的功能。接收到数据处理请求后,打开sem_in信号量,利用客户端进程将待处理数据写入共享内存中的in部分。
步骤205:利用监控线程监控所述共享内存,当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并对读取到的待处理数据进行反序列化,并调用与所述数据处理请求携带的待调用处理函数的标识信息相对应的目标函数。
步骤206:在所述写入内存中,利用目标函数对所述待处理数据进行处理,并对处理后的数据进行序列化。
步骤207:打开导出信号量,利用所述监控线程将序列化后的所述处理后的数据写入所述输出内存。
监控线程会监控到写入内存有数据存入,则其从写入内存中读取相应的待处理数据,并调用相应的目标函数对待处理数据进行处理,读取完成后释放sem_in信号量,并打开sem_out信号量,再利用监控线程将处理后的的数据写入out部分,以输出处理后的数据。对数据进行序列化和反序列化,以利于数据的传输。
步骤208:利用所述网络线程将所述输出内存中的所述处理后的数据经TCP进行输出。
上述实施例中,利用服务进程创建共享内存,并利用监控线程监控创建的共享内存,当接收到数据处理内存时,利用客户端进程将待处理数据写入共享内存中。而监控线程监控到共享内存有数据存入时,则调用相应的目标函数,以利用目标函数对待处理数据进行处理,并输出处理后的数据。由此,基于共享内存技术提供各个进程间的通信支持,方法简单而且高效,降低了***的性能消耗。
如图3所示,本发明实施例提供了一种基于共享内存的进程间功能调用装置,包括:设置单元301、处理单元302和调用单元303;其中,
所述设置单元301,用于预先设置服务进程和客户端进程;启动所述服务进程,并利用启动的所述服务进程,创建共享内存;利用所述服务进程中的监控线程监控所述共享内存;
所述处理单元302,用于接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;利用所述客户端进程将所述待处理数据存入所述共享内存;
所述调用单元303,用于当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。
本发明一个实施例中,所述设置单元301,进一步用于利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应;
所述处理单元302,用于当接收到所述数据处理请求时,打开所述存入信号量,并利用所述客户端进程将所述待处理数据存入所述写入内存;
所述调用单元303,用于当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数;在所述写入内存中,利用所述目标函数对所述待处理数据进行处理;打开所述导出信号量,利用所述监控线程将所述处理后的数据写入所述输出内存。
本发明一个实施例中,所述处理单元302,用于利用所述客户端进程将所述待处理数据进行序列化,并将序列化后的所述待处理数据写入所述写入内存;
所述调用单元303,用于利用所述监控线程对读取的所述待处理数据进行反序列化,并调用所述目标函数,并将所述处理后的数据进行序列化,将序列化后的所述处理后的数据写入所述输出内存。
本发明一个实施例中,所述处理单元302,用于利用所述服务进程中的网络线程监听传输控制协议;当所述网络线程监听到所述数据处理请求通过所述传输控制协议进行传输时,利用所述网络线程接收所述数据处理请求,并执行所述利用所述客户端进程将所述待处理数据存入所述写入内存。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明还提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行本发明上述任一实施例提供的方法。
另外,本发明还提供了一种存储控制器,包括:处理器、存储器和总线;所述存储器用于存储执行指令,所述处理器与所述存储器通过所述总线连接,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行本发明上述任一实施例提供的方法。
综上所述,本发明的各个实施例至少具有如下有益效果:
1、在本发明实施例中,利用服务进程创建共享内存,并利用服务进程中的监控线程监控创建的共享内存,当接收到数据处理内存时,利用客户端进程将待处理数据写入共享内存中。而监控线程监控到共享内存有数据存入时,则调用相应的目标函数,以利用目标函数对待处理数据进行处理,并输出处理后的数据。由此,基于共享内存技术提供各个进程间的通信支持,方法简单而且高效,降低了***的性能消耗。
2、在本发明实施例中,将共享内存分为写入内存和输出内存,并共享内存中初始化存入信号量和导出信号量,其中,写入内存部分的数据写入与读取通过存入信号量进行同步,输出内存部分的数据输出通过导出信号量进行同步。接收到数据处理请求后,打开存入信号量,利用客户端进程将待处理数据写入共享内存中的写入内存,此时监控线程会监控到写入内存有数据存入,则其从写入内存中读取相应的待处理数据,并调用相应的目标函数对待处理数据进行处理,读取完成后释放存入信号量,并打开导出信号量,再利用监控线程将处理后的的数据写入输出内存,以输出处理后的数据。由此,使数据的写入、读取和输出可根据相应的信号量在不同部分的共享内存中有序进行,提高数据处理效率的同时,进一步降低***的性能消耗。
3、在本发明实施例中,客户端进程在向写入内存写入数据时,先将数据进行序列化,然后监控线程从写入内存读取数据时,则依次将数据进行反序列化。在利用调用的目标函数对待处理数据进行处理后,在将函数返回的数据进行序列化之后,返回输出内存。由此,在共享内存中的数据均是序列号后的数据,有利于数据的传输,从而进一步降低***的性能消耗。
4、在本发明实施例中,当网络线程监控到数据处理请求通过TCP进行传输时,通过网络线程接收数据处理请求,即启动网络线程接收远程请求的功能。当网络线程接收到远程请求,将接收到的请求数据写入存入内存后,等待监控线程将处理后的数据返回输出内存,然后将输出内存中的处理后的数据通过TCP返回,之后关闭连接并继续监听TCP。由此,以简单高效的方式实现了网络线程的远程功能,进一步降低了***的性能消耗。
5、在本发明实施例中,通过共享内存存储服务进程对应的各个消息监听线程的注册信息,然后可通过消息广播进程维护此共享内存,当监控线程监控到写入此共享内存的数据中有广播消息时,调用消息广播进程,将广播消息分别发送给各个消息监听线程,以利用消息监听进程对广播消息进行广播。由此实现了进程的广播功能,方法简单高效,有利于降低***吸能消耗。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储在计算机可读取的存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质中。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种基于共享内存的进程间功能调用方法,其特征在于,包括:
预先设置服务进程和客户端进程;
启动所述服务进程,并利用启动的所述服务进程,创建共享内存;
利用所述服务进程中的监控线程监控所述共享内存;
接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;
利用所述客户端进程将所述待处理数据存入所述共享内存;
当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;
利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。
2.根据权利要求1所述的方法,其特征在于,
在所述启动所述服务进程,利用启动的所述服务进程,创建共享内存之后,进一步包括:
利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应;
所述利用所述客户端进程将所述待处理数据存入所述共享内存,包括:
当接收到所述数据处理请求时,打开所述存入信号量,并利用所述客户端进程将所述待处理数据存入所述写入内存;
所述当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数,包括:
当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数;
所述利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据,包括:
在所述写入内存中,利用所述目标函数对所述待处理数据进行处理;
打开所述导出信号量,利用所述监控线程将所述处理后的数据写入所述输出内存。
3.根据权利要求2所述的方法,其特征在于,
所述利用所述客户端进程将所述待处理数据存入所述写入内存,包括:
利用所述客户端进程将所述待处理数据进行序列化,并将序列化后的所述待处理数据写入所述写入内存;
所述当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数,包括:
利用所述监控线程对读取的所述待处理数据进行反序列化,并调用所述目标函数;
所述利用所述监控线程将所述处理后的数据写入所述输出内存,包括:
利用所述监控线程将所述处理后的数据进行序列化,并将序列化后的所述处理后的数据写入所述输出内存。
4.根据权利要求2所述的方法,其特征在于,
在所述利用所述客户端进程将所述待处理数据存入所述写入内存之前,进一步包括:
利用所述服务进程中的网络线程监听传输控制协议;
当所述网络线程监听到所述数据处理请求通过所述传输控制协议进行传输时,利用所述网络线程接收所述数据处理请求,并执行所述利用所述客户端进程将所述待处理数据存入所述写入内存。
5.根据权利要求4所述的方法,其特征在于,
在所述利用所述监控线程将所述处理后的数据写入所述输出内存之后,进一步包括:
利用所述网络线程将所述输出内存中的所述处理后的数据经所述传输控制协议进行输出,并执行所述利用所述网络线程监听传输控制协议。
6.根据权利要求1所述的方法,其特征在于,
进一步包括:设置消息广播进程;
在所述利用启动的所述服务进程,创建共享内存之后,进一步包括:
确定所述服务进程对应的至少一个消息监听线程;
将所述至少一个消息监听线程在所述共享内存中进行注册,利用所述共享内存存储所述至少一个消息监听线程分别对应的注册信息;
当所述客户端进程确定出所述数据处理请求进一步携带有广播消息时,将所述广播消息写入所述共享内存;
利用所述消息广播进程,根据所述注册信息,将所述广播消息分别发送给各个所述消息监听线程,并利用所述监听线程对所述广播消息进行广播。
7.一种基于共享内存的进程间功能调用装置,其特征在于,包括:设置单元、处理单元和调用单元;其中,
所述设置单元,用于预先设置服务进程和客户端进程;启动所述服务进程,并利用启动的所述服务进程,创建共享内存;利用所述服务进程中的监控线程监控所述共享内存;
所述处理单元,用于接收数据处理请求,所述数据处理请求中携带有待处理数据以及待调用处理函数的标识信息;利用所述客户端进程将所述待处理数据存入所述共享内存;
所述调用单元,用于当所述监控线程监控到所述共享内存中有数据存入时,调用与所述标识信息相对应的目标函数;利用调用的所述目标函数,对所述共享内存中存储的所述待处理数据进行处理,并输出处理后的数据。
8.根据权利要求7所述的装置,其特征在于,
所述设置单元,进一步用于利用所述服务进程,在所述共享内存中初始化存入信号量和导出信号量,并将所述共享内存分为写入内存和输出内存;其中,所述存入信号量与所述写入内存相对应,所述导出信号量与所述输出内存相对应;
所述处理单元,用于当接收到所述数据处理请求时,打开所述存入信号量,并利用所述客户端进程将所述待处理数据存入所述写入内存;
所述调用单元,用于当所述监控线程监控到所述写入内存有数据存入时,读取所述写入内存中的所述待处理数据,并调用所述目标函数;在所述写入内存中,利用所述目标函数对所述待处理数据进行处理;打开所述导出信号量,利用所述监控线程将所述处理后的数据写入所述输出内存。
9.根据权利要求8所述的装置,其特征在于,
所述处理单元,用于利用所述客户端进程将所述待处理数据进行序列化,并将序列化后的所述待处理数据写入所述写入内存;
所述调用单元,用于利用所述监控线程对读取的所述待处理数据进行反序列化,并调用所述目标函数,并将所述处理后的数据进行序列化,将序列化后的所述处理后的数据写入所述输出内存。
10.根据权利要求8所述的装置,其特征在于,
所述处理单元,用于利用所述服务进程中的网络线程监听传输控制协议;当所述网络线程监听到所述数据处理请求通过所述传输控制协议进行传输时,利用所述网络线程接收所述数据处理请求,并执行所述利用所述客户端进程将所述待处理数据存入所述写入内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710708007.2A CN107491355A (zh) | 2017-08-17 | 2017-08-17 | 一种基于共享内存的进程间功能调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710708007.2A CN107491355A (zh) | 2017-08-17 | 2017-08-17 | 一种基于共享内存的进程间功能调用方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107491355A true CN107491355A (zh) | 2017-12-19 |
Family
ID=60646324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710708007.2A Pending CN107491355A (zh) | 2017-08-17 | 2017-08-17 | 一种基于共享内存的进程间功能调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107491355A (zh) |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038011A (zh) * | 2017-12-28 | 2018-05-15 | 深圳市富途网络科技有限公司 | 一种实现sns多进程通信的方法 |
CN108566424A (zh) * | 2018-04-11 | 2018-09-21 | 深圳市腾讯网络信息技术有限公司 | 基于服务器资源消耗预测的调度方法、装置和*** |
CN109688225A (zh) * | 2019-01-08 | 2019-04-26 | 网易(杭州)网络有限公司 | 一种通信方法及装置 |
CN110059004A (zh) * | 2019-03-21 | 2019-07-26 | 深圳市腾讯信息技术有限公司 | 一种应用测试的方法、装置、设备和介质 |
CN110377356A (zh) * | 2019-06-14 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、***及计算机可读存储介质 |
CN110633145A (zh) * | 2019-08-27 | 2019-12-31 | 苏宁云计算有限公司 | 一种分布式***内实时通讯方法、装置及分布式*** |
CN110928703A (zh) * | 2018-09-20 | 2020-03-27 | 北京君正集成电路股份有限公司 | 多进程通讯注册方法和装置 |
CN110928701A (zh) * | 2018-09-20 | 2020-03-27 | 北京君正集成电路股份有限公司 | 通讯注册方法和装置 |
CN111181999A (zh) * | 2020-01-09 | 2020-05-19 | 山东超越数控电子股份有限公司 | 稳定高效易用的通信方法 |
CN111352743A (zh) * | 2018-12-24 | 2020-06-30 | 北京新媒传信科技有限公司 | 一种进程通讯方法和装置 |
CN111597089A (zh) * | 2020-05-18 | 2020-08-28 | 广州锦行网络科技有限公司 | 一种Linux***调用事件采集和缓存装置及方法 |
CN111699479A (zh) * | 2019-06-20 | 2020-09-22 | 深圳市大疆创新科技有限公司 | 日志处理方法、设备及计算机可读存储介质 |
CN112114983A (zh) * | 2020-09-14 | 2020-12-22 | 深圳花儿数据技术有限公司 | 一种基于共享内存的通信方法、装置和设备 |
CN112199205A (zh) * | 2019-07-08 | 2021-01-08 | 南京工程学院 | 一种异构平台间的程序通信方法 |
CN112749023A (zh) * | 2019-10-30 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 一种信息的处理方法、装置、设备及*** |
CN113365046A (zh) * | 2021-04-30 | 2021-09-07 | 厦门立林科技有限公司 | 高性能音视频数据测试发送方法及其应用和存储介质 |
CN114501376A (zh) * | 2021-12-24 | 2022-05-13 | 中汽创智科技有限公司 | 一种车载通信方法、装置、设备以及存储介质 |
CN114691051A (zh) * | 2022-05-30 | 2022-07-01 | 恒生电子股份有限公司 | 数据处理方法以及装置 |
CN116069246A (zh) * | 2022-11-30 | 2023-05-05 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及*** |
CN116126526A (zh) * | 2022-12-29 | 2023-05-16 | 苏州华太电子技术股份有限公司 | 计算超越函数的方法、装置、电子设备和存储介质 |
CN116627682A (zh) * | 2023-07-25 | 2023-08-22 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039333A (zh) * | 2007-04-12 | 2007-09-19 | 华为技术有限公司 | 一种高级数据链路控制通道带宽动态调整中的方法及装置 |
CN102340489A (zh) * | 2010-07-20 | 2012-02-01 | 阿里巴巴集团控股有限公司 | 一种服务器之间的数据传输方法和服务器 |
CN102426536A (zh) * | 2011-10-26 | 2012-04-25 | 深圳市亚特尔科技有限公司 | 一种多任务间数据通信的实现方法及*** |
CN102567097A (zh) * | 2011-12-29 | 2012-07-11 | Tcl王牌电器(惠州)有限公司 | 一种多任务下载的方法及终端 |
CN103645863A (zh) * | 2013-12-12 | 2014-03-19 | 北京奇虎科技有限公司 | 共享内存的数据读取方法和***、写入方法和*** |
CN104102550A (zh) * | 2013-04-12 | 2014-10-15 | 南京南瑞继保电气有限公司 | 一种多主机进程间通信的方法 |
CN104899089A (zh) * | 2015-05-25 | 2015-09-09 | 常州北大众志网络计算机有限公司 | 一种面向异构多核体系的任务调度方法 |
CN105721473A (zh) * | 2016-02-24 | 2016-06-29 | 锐达互动科技股份有限公司 | 一种web端远程调用优化的方法及*** |
-
2017
- 2017-08-17 CN CN201710708007.2A patent/CN107491355A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101039333A (zh) * | 2007-04-12 | 2007-09-19 | 华为技术有限公司 | 一种高级数据链路控制通道带宽动态调整中的方法及装置 |
CN102340489A (zh) * | 2010-07-20 | 2012-02-01 | 阿里巴巴集团控股有限公司 | 一种服务器之间的数据传输方法和服务器 |
CN102426536A (zh) * | 2011-10-26 | 2012-04-25 | 深圳市亚特尔科技有限公司 | 一种多任务间数据通信的实现方法及*** |
CN102567097A (zh) * | 2011-12-29 | 2012-07-11 | Tcl王牌电器(惠州)有限公司 | 一种多任务下载的方法及终端 |
CN104102550A (zh) * | 2013-04-12 | 2014-10-15 | 南京南瑞继保电气有限公司 | 一种多主机进程间通信的方法 |
CN103645863A (zh) * | 2013-12-12 | 2014-03-19 | 北京奇虎科技有限公司 | 共享内存的数据读取方法和***、写入方法和*** |
CN104899089A (zh) * | 2015-05-25 | 2015-09-09 | 常州北大众志网络计算机有限公司 | 一种面向异构多核体系的任务调度方法 |
CN105721473A (zh) * | 2016-02-24 | 2016-06-29 | 锐达互动科技股份有限公司 | 一种web端远程调用优化的方法及*** |
Cited By (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038011A (zh) * | 2017-12-28 | 2018-05-15 | 深圳市富途网络科技有限公司 | 一种实现sns多进程通信的方法 |
CN108566424A (zh) * | 2018-04-11 | 2018-09-21 | 深圳市腾讯网络信息技术有限公司 | 基于服务器资源消耗预测的调度方法、装置和*** |
CN108566424B (zh) * | 2018-04-11 | 2021-04-20 | 深圳市腾讯网络信息技术有限公司 | 基于服务器资源消耗预测的调度方法、装置和*** |
CN110928703B (zh) * | 2018-09-20 | 2023-02-21 | 北京君正集成电路股份有限公司 | 多进程通讯注册方法和装置 |
CN110928703A (zh) * | 2018-09-20 | 2020-03-27 | 北京君正集成电路股份有限公司 | 多进程通讯注册方法和装置 |
CN110928701A (zh) * | 2018-09-20 | 2020-03-27 | 北京君正集成电路股份有限公司 | 通讯注册方法和装置 |
CN111352743B (zh) * | 2018-12-24 | 2023-12-01 | 北京新媒传信科技有限公司 | 一种进程通讯方法和装置 |
CN111352743A (zh) * | 2018-12-24 | 2020-06-30 | 北京新媒传信科技有限公司 | 一种进程通讯方法和装置 |
CN109688225A (zh) * | 2019-01-08 | 2019-04-26 | 网易(杭州)网络有限公司 | 一种通信方法及装置 |
CN109688225B (zh) * | 2019-01-08 | 2021-11-16 | 网易(杭州)网络有限公司 | 一种通信方法及装置 |
CN110059004A (zh) * | 2019-03-21 | 2019-07-26 | 深圳市腾讯信息技术有限公司 | 一种应用测试的方法、装置、设备和介质 |
CN110377356A (zh) * | 2019-06-14 | 2019-10-25 | 北京奇艺世纪科技有限公司 | 任务处理方法、装置、***及计算机可读存储介质 |
CN111699479A (zh) * | 2019-06-20 | 2020-09-22 | 深圳市大疆创新科技有限公司 | 日志处理方法、设备及计算机可读存储介质 |
CN112199205A (zh) * | 2019-07-08 | 2021-01-08 | 南京工程学院 | 一种异构平台间的程序通信方法 |
CN112199205B (zh) * | 2019-07-08 | 2023-10-27 | 南京工程学院 | 一种异构平台间的程序通信方法 |
CN110633145B (zh) * | 2019-08-27 | 2023-03-31 | 苏宁云计算有限公司 | 一种分布式***内实时通讯方法、装置及分布式*** |
CN110633145A (zh) * | 2019-08-27 | 2019-12-31 | 苏宁云计算有限公司 | 一种分布式***内实时通讯方法、装置及分布式*** |
CN112749023A (zh) * | 2019-10-30 | 2021-05-04 | 阿里巴巴集团控股有限公司 | 一种信息的处理方法、装置、设备及*** |
CN112749023B (zh) * | 2019-10-30 | 2024-06-11 | 阿里巴巴集团控股有限公司 | 一种信息的处理方法、装置、设备及*** |
CN111181999A (zh) * | 2020-01-09 | 2020-05-19 | 山东超越数控电子股份有限公司 | 稳定高效易用的通信方法 |
CN111597089B (zh) * | 2020-05-18 | 2020-12-18 | 广州锦行网络科技有限公司 | 一种Linux***调用事件采集和缓存装置及方法 |
CN111597089A (zh) * | 2020-05-18 | 2020-08-28 | 广州锦行网络科技有限公司 | 一种Linux***调用事件采集和缓存装置及方法 |
CN112114983B (zh) * | 2020-09-14 | 2022-04-19 | 深圳花儿数据技术有限公司 | 一种基于共享内存的通信方法、装置和设备 |
CN112114983A (zh) * | 2020-09-14 | 2020-12-22 | 深圳花儿数据技术有限公司 | 一种基于共享内存的通信方法、装置和设备 |
CN113365046B (zh) * | 2021-04-30 | 2023-08-01 | 厦门立林科技有限公司 | 高性能音视频数据测试发送方法及其应用和存储介质 |
CN113365046A (zh) * | 2021-04-30 | 2021-09-07 | 厦门立林科技有限公司 | 高性能音视频数据测试发送方法及其应用和存储介质 |
CN114501376A (zh) * | 2021-12-24 | 2022-05-13 | 中汽创智科技有限公司 | 一种车载通信方法、装置、设备以及存储介质 |
CN114691051B (zh) * | 2022-05-30 | 2022-10-04 | 恒生电子股份有限公司 | 数据处理方法以及装置 |
CN114691051A (zh) * | 2022-05-30 | 2022-07-01 | 恒生电子股份有限公司 | 数据处理方法以及装置 |
CN116069246A (zh) * | 2022-11-30 | 2023-05-05 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及*** |
CN116069246B (zh) * | 2022-11-30 | 2023-08-29 | 北京天融信网络安全技术有限公司 | 用于虚拟机的数据读写方法及*** |
CN116126526A (zh) * | 2022-12-29 | 2023-05-16 | 苏州华太电子技术股份有限公司 | 计算超越函数的方法、装置、电子设备和存储介质 |
CN116126526B (zh) * | 2022-12-29 | 2024-04-19 | 苏州华太电子技术股份有限公司 | 计算超越函数的方法、装置、电子设备和存储介质 |
CN116627682B (zh) * | 2023-07-25 | 2023-09-29 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
CN116627682A (zh) * | 2023-07-25 | 2023-08-22 | 菲特(天津)检测技术有限公司 | 基于共享内存的远程工业信息检测方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107491355A (zh) | 一种基于共享内存的进程间功能调用方法及装置 | |
CN105338061B (zh) | 一种轻量级消息中间件的实现方法与*** | |
CN103970903B (zh) | 基于Web的大型工业***反馈数据实时处理方法及*** | |
CN109815252A (zh) | 测试数据生成方法、装置、计算机设备及可读存储介质 | |
CN109508246A (zh) | 日志记录方法、***和计算机可读存储介质 | |
CN101520792A (zh) | 一种自动挂载与识别***文件的方法及其*** | |
CN104156255B (zh) | 一种虚拟机迁移方法、虚拟机迁移装置及源物理主机 | |
CN108572876A (zh) | 一种读写锁的实现方法及装置 | |
CN111314212B (zh) | 一种基于Netty与插件机制的API网关及控制方法 | |
CN101588086A (zh) | 多插件嵌入式故障信息***子站对录波文件的处理方法 | |
CN110099108B (zh) | 一种区块链事件去重方法、装置、计算机设备及存储介质 | |
CN103064761A (zh) | 一种数据同步方法、设备和*** | |
CN104462006B (zh) | ***级芯片中的多个处理器核间配置同步方法和设备 | |
CN104461705B (zh) | 一种业务访问的方法及存储控制器、集群存储*** | |
CN101420440B (zh) | 字符串匹配处理方法及装置 | |
CN106997313A (zh) | 一种应用程序的信号处理方法、***及终端设备 | |
CN109819020A (zh) | 基于配置化的第三方平台登录对接方法、存储介质 | |
CN107391278A (zh) | 一种基于共享内存的前后端通信方法 | |
CN107291387A (zh) | 一种双控磁盘阵列的磁盘接入方法 | |
CN111147603A (zh) | 一种推理服务网络化的方法及装置 | |
CN105988951B (zh) | 存储器控制器及相关的控制方法 | |
CN114238481A (zh) | 一种分布式实时数据导入装置 | |
CN104572316A (zh) | 游戏程序与运行平台交互的方法和*** | |
CN110427269A (zh) | 处理器及其数据传递方法、计算机可读存储介质 | |
CN108391098A (zh) | 物联网实验装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20171219 |