CN101470636B - 一种消息的读写方法和装置 - Google Patents
一种消息的读写方法和装置 Download PDFInfo
- Publication number
- CN101470636B CN101470636B CN2007103044158A CN200710304415A CN101470636B CN 101470636 B CN101470636 B CN 101470636B CN 2007103044158 A CN2007103044158 A CN 2007103044158A CN 200710304415 A CN200710304415 A CN 200710304415A CN 101470636 B CN101470636 B CN 101470636B
- Authority
- CN
- China
- Prior art keywords
- message
- consumer
- type
- record
- message synchronization
- 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
Images
Landscapes
- Telephonic Communication Services (AREA)
Abstract
本发明公开了一种消息的读写方法,包括将消息从生产者发送到消息队列的步骤;根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者的步骤;当有对应的消费者时,唤醒所述对应的消费者中的一个消费者的步骤;将所述消息发送给所述被唤醒的消费者的步骤。本发明还公开了一种消息的读写装置,包括发送装置、查询装置、唤醒装置和将所述消息发送给所述被唤醒的消费者的装置。本发明通过生产者根据消息的类型,在消息同步表中查询有对应的消费者,并唤醒其中的一个消费者的方法,使得消费者不会被无谓唤醒,从而节省了CPU时间。
Description
技术领域
本发明涉及计算机技术领域,特别是涉及一种消息的读写方法和装置。
背景技术
通过消息队列进行数据传输是UNIX操作系统的IPC(InterProcess Communication,进程间通讯)的基本方法之一,被广泛地使用于分布式应用程序间的数据交换。应用程序通过调用系统提供的API(Application Programming Interface,应用程序接口)函数访问目标消息队列,读取或写入数据。根据调用函数的不同,应用程序可以分为两种,消息的生产者和消费者,消息的生产者和消费者通过指定所发或所收消息的类型来建立联系。每一条消息在消息队列中都是唯一的,只能被一个生产者发送后进入队列,被一个消费者接收后取出队列。
任何一个消息队列都支持多个应用进程或线程同时对其访问,消息队列系统提供互斥处理机制,可以保证各个应用进程或线程的安全访问,不会出现冲突。其中,多个应用进程或线程可以处理不同类型的消息。例如,A进程发送X类型的消息,B进程发送Y类型的消息,C进程接收X类型的消息,D进程接收Y类型的消息,因此进程A、C和B、D分别配对,而彼此间没有影响。另外,多个应用进程或线程也可以处理相同类型的消息。例如,A进程发送X类型的消息,B、C、D进程都接收X类型的消息,当有一条X类型的消息到达队列时,B、C、D其中的一个可以收到这条消息,其他进程则处于等待状态。
消息队列支持两种使用模式,一种使用模式为:首先,消息的生产者产生某种类型的消息,并将该消息放入消息队列;然后,消息的消费者从消息队列中接收该类型的消息。如果有多个消息的消费者,则消费者按照调用的先后顺序从队列中接收消息,直到队列中该类型的消息为空。另一种使用模式为:如果消息队列中某种类型的消息为空,则消息的消费者调用接收函数,处于等待状态;当消息的生产者产生该类型的消息并将该消息放入消息队列时,消息的消费者就可以立即取得该消息。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:当消息队列中的某一类型的消息为空,且同时有大量消息的消费者处于等待状态时,该些消费者不占用CPU时间;而当消息的生产者产生某种类型的消息并将该消息放入消息队列时,所有处于等待状态的消费者都被唤醒,而无论该消费者是否需要接收该种类型的消息。被唤醒的消费者会在消息队列中对需要的消息进行查询,其中一个消费者收到该消息,而其他消费者会在遍历所有的消息后再次进入等待状态。因此,当消息的产生非常频繁时,所有处于等待状态的消费者会被反复唤醒,因此该些消费者会占用大量的CPU时间,产生非常大的无谓的系统开销,消息的并发接收能力急剧下降。当硬件系统采用多CPU结构时,产生的问题更加明显。
发明内容
本发明实施例要解决的问题是提供一种消息的读写方法和装置,以克服现有技术中由于消费者被无谓唤醒而造成占用大量CPU时间的缺陷。
为达到上述目的,本发明实施例的技术方案提供一种消息的读写方法,包括以下步骤:将消息从生产者发送到消息队列的步骤;根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者的步骤;当有对应的消费者时,唤醒所述对应的消费者中的一个消费者的步骤;将所述消息发送给所述被唤醒的消费者的步骤。
其中,在所述生产者唤醒对应的消费者中的一个消费者的步骤中,具体包括:获取与所述消息的类型对应的记录的下标;如果所述记录的等待消费者的数量大于0,则获取与所述下标对应的消息同步信号灯,对所述消息同步信号灯进行V操作,并将所述记录中等待消费者的数量减1。
其中,在所述生产者查询消息同步表之前,还包括消费者加入等待队列的步骤,该消费者加入等待队列的步骤具体包括:根据需读取消息的类型,查询所述消息同步表,如果所述消息同步表中存在与所述需读取消息的类型对应的记录,则将所述记录中等待消费者的数量加1;获取与所述需读取消息的类型对应的记录的下标;获取与所述下标对应的消息同步信号灯;对所述消息同步信号灯进行P操作。
其中,在所述生产者查询消息同步表之前,还包括消费者建立消息同步表记录并加入等待队列的步骤,该消费者建立消息同步表记录并加入等待队列的步骤具体包括:根据需读取消息的类型,查询所述消息同步表,如果所述消息同步表中没有与所述需读取消息的类型对应的记录,则在所述消息同步表中建立消息同步表记录,并对所述记录进行初始化;获取所述记录的下标;获取与所述下标对应的消息同步信号灯;对所述消息同步信号灯进行P操作。
其中,所述对记录进行初始化具体包括:将所述记录的消息类型设置为所述需读取消息的类型;将所述记录的等待消费者的数量设置为1。
其中,在所述被唤醒的消费者读取消息之前,还包括如下步骤:判断所述等待消费者的数量是否为0,如果是,则清除所述记录。
其中,在所述生产者查询消息同步表之前,还包括如下步骤:建立消息同步信号灯集;建立消息同步表,所述消息同步表中表项的数量与所述消息同步信号灯集中的消息同步信号灯的数量相同;对所述消息同步表进行初始化。
其中,所述对消息同步表进行初始化具体包括:将所述消息同步表的消息类型设置为-1;将所述消息同步表的记录的数量设置为0。
本发明实施例的技术方案还提供了一种消息的读写装置,包括:发送装置,用于将消息从生产者发送到消息队列;查询装置,用于根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者;唤醒装置,当有对应的消费者时,唤醒所述对应的消费者中的一个消费者;将所述消息发送给所述被唤醒的消费者的装置。
其中,所述消息的读写装置还包括:信号灯集建立单元,用于建立消息同步信号灯集;消息同步表建立单元,用于建立消息同步表,所述消息同步表中表项的数量与所述消息同步信号灯集中的消息同步信号灯的数量相同;消息同步表初始化单元,用于对所述消息同步表进行初始化。
上述技术方案仅是本发明的一个优选技术方案,具有如下优点:本发明实施例通过生产者根据消息的类型,在消息同步表中查询有对应的消费者,并唤醒其中的一个消费者的方法,使得消费者不会被无谓唤醒,从而节省了CPU时间。
附图说明
图1是本发明实施例的一种消息同步表的结构图;
图2是本发明实施例的一种消息的读写方法的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
本发明采用基于内存的BQS(Buffer Queue System,消息队列系统),该BQS采用链表式数据结构,利用UNIX系统的IPC进程间通讯(共享内存、信号灯)技术,使得消息的生产者和消息的消费者可以对消息队列进行操作,完成应用进程或线程间的数据交换。
一个BQS中可以包含多个消息队列,各个消息队列之间相互独立。每个消息队列中可以包含多种类型的消息,每种类型的消息链表中可以包含多个消息或空消息。在BQS中,每个消息可以采用分段存储方式存储在多个数据段中,每个数据段存储区的大小可以根据消息的长度而定,既可以节省存储区空间,又可以提高消息操作的灵活性。
本发明实施例在采用BQS时,需要完成以下操作过程:首先,建立消息同步信号灯集,所述消息同步信号灯集用于消息同步,其数量可以根据BQS能够支撑的最大并发数而定;然后,建立消息同步表,所述消息同步表中表项的数量与所述消息同步信号灯集中的消息同步信号灯的数量相同;最后,对所述消息同步表进行初始化,其初始化过程具体为:将所述消息同步表的消息类型设置为-1,即设置mtype=-1;将所述消息同步表的记录的数量设置为0,即设置count=0。
本发明实施例的一种消息同步表的结构如图1所示,该消息同步表包括n个表项,所述表项的下标Idx分别为0,1,2……,n-1;每个表项对应一个消息同步信号灯,用于记录消息类型和需读取所述类型的消息的等待消费者的数量。所述表项中存储的记录可以由生产者和消费者进行互斥地查询和修改。
采用BQS时,本发明实施例的一种消息的读写方法如图2所示,首先将消息从生产者发送到消息队列,然后根据所述消息的类型,查询是否有对应的消费者,如果有,则唤醒所述对应的消费者中的一个消费者,最后被唤醒的消费者读取所述消息。参照图2,本实施例包括以下步骤:
步骤s201,消费者加入等待队列。其加入过程包括以下步骤:
步骤s2011,根据需读取消息的类型,查询消息同步表,如果所述消息同步表中没有与所述需读取消息的类型对应的记录,则转步骤s2012;否则转步骤s2013。本实施例中假设该消费者需读取type类型的消息,则调用MsgQueSynTbl_Alloc(type)对消息同步表进行查询。
步骤s2012,在所述消息同步表中建立消息同步表记录,并对所述记录进行初始化,然后转步骤s2014。所述对记录进行初始化具体包括:将所述记录的消息类型设置为所述需读取消息的类型,即设置mtype=type;将所述记录的等待消费者的数量设置为1,即设置count=1。
步骤s2013,将所述记录中等待消费者的数量加1,即执行count++。
步骤s2014,获取所述记录的下标MsgQueSynTblIndex。
步骤s2015,对BQS核心资源进行信号灯V操作,使得其他应用进程或线程能够访问BQS。所述BQS核心资源由消息的实体数据区、链式索引数据区及消息同步表共同构成。所述V操作是不可中断的程序段,称为V原语。V原语操作的动作为:首先信号量sem加1;然后若信号量sem加1后大于零,则进程继续执行;若信号量sem加1后小于或等于零,则从该信号的等待队列中唤醒一等待进程,然后再返回原进程继续执行或转进程调度。
步骤s2016,根据所述记录的下标MsgQueSynTblIndex,获取与所述下标对应的消息同步信号灯。
步骤s2017,对所述消息同步信号灯进行P操作,即调用T_Mutex_SemP(MsgQueSynTblIndex),等待消息到达的信号唤醒。所述P操作是不可中断的程序段,称为P原语。P原语操作的动作为:首先信号量sem减1;然后若信号量sem减1后仍大于或等于零,则进程继续执行;若sem减1后小于零,则该进程被阻塞后进入与该信号相对应的队列中,转进程调度。
步骤s202,将消息从生产者发送到消息队列。首先对BQS核心资源进行信号灯P操作,使得所有使用BQS的应用进程或线程达到同步;然后,将消息类型为type的消息从该生产者发送到指定的消息队列中。
步骤s203,根据消息的类型,查询是否有对应的消费者。如果有,则转步骤s204,否则对BQS核心资源进行信号灯V操作,返回0并结束。其查询过程为:根据所述消息的类型type,调用GetMsgQueSynIdxByMType(type),查询消息同步表,如果所述消息同步表中存在与type类型的记录,则确认有对应的消费者;否则没有对应的消费者。
步骤s204,唤醒所述对应的消费者中的一个消费者。其唤醒过程具体包括:首先,获取与所述消息的类型type对应的记录的下标MsgQueSynTblIndex;然后,如果所述记录的等待消费者的数量大于0,则根据所述记录的下标MsgQueSynTblIndex,获取与所述下标对应的消息同步信号灯;调用T_Mutex_SemV(MsgQueSynTblIndex),对所述消息同步信号灯进行V操作,唤醒等待接收type类型消息的消费者,并将所述记录中等待消费者的数量减1。再对BQS核心资源进行信号灯V操作,使得其他应用进程或线程能够访问BQS,消息写入成功后返回0。如果有多个消费者等待接收type类型的消息,当写入消息后,进行同步表信号灯V操作,此时只有一个消费者被唤醒,其他消费者仍然处于信号灯睡眠状态,不会因为一个消息的到达,造成各个消费者对系统CPU资源的占用。而对被唤醒消费者的选择,则根据操作系统的信号灯实现而定,且对多个接收type类型消息的消费者来说,各个消费者能够取得该消息的机会是均等的。
步骤s205,对消息同步记录进行清理。首先,对BQS核心资源进行信号灯P操作,使得所有使用BQS的应用进程或线程达到同步的效果;然后,判断所述等待消费者的数量是否为0,如果是,则清除所述记录;最后,对BQS核心资源进行信号灯V操作,使得其他应用进程或线程能够访问BQS。
步骤s206,将所述消息发送给所述被唤醒的消费者。其发送过程包括以下步骤:
步骤s2061,根据消息类型type,在消息队列中进行查询,如果查询到所述消息队列中有类型为type的消息,则转步骤s2062;否则转步骤s2064。
步骤s2062,将所述消息从所述消息队列发送到所述被唤醒的消费者。
步骤s2063,对BQS核心资源进行信号灯V操作,使得其他应用进程或线程能够访问BQS,返回消息体的长度并结束。
步骤s2064,判断读取消息的标志是否为NO_WAIT,如果是,则返回-1并结束;否则进行加入等待队列的操作。
在进行步骤s206时,如果在此段时间内,没有将消息类型为type的消息发送给其他消费者,则该消息类型为type的消息一定能够发送到该消费者;如果消息类型为type的消息被发送到该消费者前,全部被发送到其他消费者,则仍然没有消息类型为type的消息被发送到该消费者,该消费者处于饥饿状态,继续进行加入等待队列的操作。
当多个消费者等待同一种类型的消息时,例如消费者1、消费者2和消费者n都在等待类型为mtype_1的消息,该消息类型mtype_1在消息同步表中分配到idx=0表项;如果有三个生产者将产生的消息发送到消息队列,其中生产者1和生产者2都发送了类型为mtype_1的消息,生产者n发送了类型为mtype_2的消息。本发明实施例的一种消息的读写流程包括以下步骤:
步骤s301,消费者1等待消息时,以消息类型mtype_1从消息同步表中分配到idx=0表项,也就拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemP操作。
步骤s302,消费者2等待消息时,以消息类型mtype_1从消息同步表中检索到idx=0表项,同样拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemP操作。
步骤s303,消费者n等待消息时,以消息类型mtype_1从消息同步表中检索到idx=0表项,同样拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemP操作。
步骤s304,生产者1将消息写入消息队列后,检索到类型mtype_1已经有消费者等待接收,也就拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemV操作。此时,消费者1、消费者2和消费者n中的一个消费者被唤醒,取得消息。
步骤s305,生产者2将消息写入消息队列后,检索到类型mtype_1已经有消费者等待接收,也就拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemV操作。此时,剩余的消费者中的一个消费者被唤醒,取得消息。
步骤s306,生产者n将消息写入消息队列后,检索到类型mtype_2未有消费者等待接收,操作结束。
经过上述过程后,消费者中的最后一个仍然处于接收等待状态;消息队列中有一条类型为mtype_2的消息。
当多个消费者等待不同类型的消息时,例如消费者1等待类型为mtype_1的消息,消费者2等待类型为mtype_2的消息,消费者n等待类型为mtype_n的消息,该消息类型mtype_1在消息同步表中分配到idx=0表项,该消息类型mtype_2在消息同步表中分配到idx=1表项,该消息类型mtype_n在消息同步表中分配到idx=2表项;如果有三个生产者将产生的消息发送到消息队列,其中生产者1发送了类型为mtype_1的消息,生产者2发送了类型为mtype_2的消息,生产者n发送了类型为mtype_n的消息。本发明实施例的一种消息的读写流程包括以下步骤:
步骤s401,消费者1等待消息时,以消息类型mtype_1从消息同步表中分配到idx=0表项,也就拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemP操作。
步骤s402,消费者2等待消息时,以消息类型mtype_2从消息同步表中分配到idx=1表项,也就拥有了BQS消息信号灯的第idx=1项的使用权,并进行T_Mutex_SemP操作。
步骤s403,消费者n等待消息时,以消息类型mtype_n从消息同步表中分配到idx=2表项,也就拥有了BQS消息信号灯的第idx=2项的使用权,并进行T_Mutex_SemP操作。
步骤s404,生产者1将消息写入消息队列后,检索到类型mtype_1已经有消费者等待接收,也就拥有了BQS消息信号灯的第idx=0项的使用权,并进行T_Mutex_SemV操作。此时,消费者1被唤醒,取得消息。
步骤s405,生产者2将消息写入消息队列后,检索到类型mtype_2已经有消费者等待接收,也就拥有了BQS消息信号灯的第idx=1项的使用权,并进行T_Mutex_SemV操作。此时,消费者2被唤醒,取得消息。
步骤s406,生产者n将消息写入消息队列后,检索到类型mtype_n已经有消费者等待接收,也就拥有了BQS消息信号灯的第idx=2项的使用权,并进行T_Mutex_SemV操作。此时,消费者n被唤醒,取得消息。
经过上述过程后,所有的消费者都已经取得消息,消息队列中无任何消息。
本发明实施例通过生产者根据消息的类型,在消息同步表中查询有对应的消费者,并唤醒其中的一个消费者的方法,使得消费者不会被无谓唤醒,从而节省了CPU时间。
本发明实施例的一种消息的读写装置,包括:发送装置,用于将消息从生产者发送到消息队列;查询装置,用于根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者;唤醒装置,当有对应的消费者时,唤醒所述对应的消费者中的一个消费者;将所述消息发送给所述被唤醒的消费者的装置;信号灯集建立单元,用于建立消息同步信号灯集;消息同步表建立单元,用于建立消息同步表,所述消息同步表中表项的数量与所述消息同步信号灯集中的消息同步信号灯的数量相同;消息同步表初始化单元,用于对所述消息同步表进行初始化。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,因此,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种消息的读写方法,其特征在于,包括以下步骤:
将消息从生产者发送到消息队列的步骤;
根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者的步骤;
当有对应的消费者时,唤醒所述对应的消费者中的一个消费者的步骤;
将所述消息发送给所述被唤醒的消费者的步骤;
在所述生产者查询消息同步表之前,还包括如下步骤:
建立消息同步信号灯集;
建立消息同步表,所述消息同步表中表项的数量与所述消息同步信号灯集中的消息同步信号灯的数量相同;
对所述消息同步表进行初始化。
2.如权利要求1所述消息的读写方法,其特征在于,在所述唤醒对应的消费者中的一个消费者的步骤中,具体包括:
获取与所述消息的类型对应的记录的下标;
如果所述记录的等待消费者的数量大于0,则获取与所述下标对应的消息同步信号灯,对所述消息同步信号灯进行V操作,并将所述记录中等待消费者的数量减1。
3.如权利要求1所述消息的读写方法,其特征在于,在所述查询消息同步表之前,还包括消费者加入等待队列的步骤,该消费者加入等待队列的步骤具体包括:
根据需读取消息的类型,查询所述消息同步表,如果所述消息同步表中存在与所述需读取消息的类型对应的记录,则将所述记录中等待消费者的数量加1;
获取与所述需读取消息的类型对应的记录的下标;
获取与所述下标对应的消息同步信号灯;
对所述消息同步信号灯进行P操作。
4.如权利要求1所述消息的读写方法,其特征在于,在所述查询消息同步表之前,还包括消费者建立消息同步表记录并加入等待队列的步骤,该消费者建立消息同步表记录并加入等待队列的步骤具体包括:
根据需读取消息的类型,查询所述消息同步表,如果所述消息同步表中没有与所述需读取消息的类型对应的记录,则在所述消息同步表中建立消息同步表记录,并对所述记录进行初始化;
获取所述记录的下标;
获取与所述下标对应的消息同步信号灯;
对所述消息同步信号灯进行P操作。
5.如权利要求4所述消息的读写方法,其特征在于,所述对记录进行初始化具体包括:
将所述记录的消息类型设置为所述需读取消息的类型;
将所述记录的等待消费者的数量设置为1。
6.如权利要求1所述消息的读写方法,其特征在于,在所述被唤醒的消费者读取消息之前,还包括如下步骤:
判断所述等待消费者的数量是否为0,如果是,则清除所述记录。
7.如权利要求1所述消息的读写方法,其特征在于,所述对消息同步表进行初始化具体包括:
将所述消息同步表的消息类型设置为-1;
将所述消息同步表的记录的数量设置为0。
8.一种消息的读写装置,其特征在于,包括:
发送装置,用于将消息从生产者发送到消息队列;
查询装置,用于根据所述消息的类型,查询消息同步表,如果所述消息同步表中存在与所述消息的类型对应的记录,则确认有对应的消费者;
唤醒装置,当有对应的消费者时,唤醒所述对应的消费者中的一个消费者;
将所述消息发送给所述被唤醒的消费者的装置;
所述消息的读写装置还包括:
信号灯集建立单元,用于建立消息同步信号灯集;
消息同步表建立单元,用于建立消息同步表,所述消息同步表中表项的数量与所述消息同步信号灯集中的消息同步信号灯的数量相同;
消息同步表初始化单元,用于对所述消息同步表进行初始化。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103044158A CN101470636B (zh) | 2007-12-27 | 2007-12-27 | 一种消息的读写方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007103044158A CN101470636B (zh) | 2007-12-27 | 2007-12-27 | 一种消息的读写方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101470636A CN101470636A (zh) | 2009-07-01 |
CN101470636B true CN101470636B (zh) | 2011-10-26 |
Family
ID=40828124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007103044158A Active CN101470636B (zh) | 2007-12-27 | 2007-12-27 | 一种消息的读写方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101470636B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103064731A (zh) * | 2012-12-26 | 2013-04-24 | 人民搜索网络股份公司 | 一种提高消息队列系统性能的装置及其方法 |
CN105095364B (zh) * | 2015-06-26 | 2018-11-23 | 车智互联(北京)科技有限公司 | 一种数据同步系统和方法 |
CN105760216A (zh) * | 2016-02-29 | 2016-07-13 | 惠州市德赛西威汽车电子股份有限公司 | 一种多进程同步控制方法 |
CN106681847B (zh) * | 2016-12-30 | 2020-08-11 | 深圳Tcl数字技术有限公司 | 基于Android系统的消息处理方法及装置 |
CN107844325A (zh) * | 2017-10-27 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种分布式数据的获取方法及系统 |
CN110032459B (zh) * | 2019-04-22 | 2022-05-03 | 深圳乐信软件技术有限公司 | 消息队列配置方法、装置、计算机设备及存储介质 |
CN110225133B (zh) * | 2019-06-20 | 2022-01-21 | 恒生电子股份有限公司 | 消息发送方法、节点、装置、系统及相关设备 |
CN112612582B (zh) * | 2020-12-14 | 2024-05-28 | 北京和利时控制技术有限公司 | 信号量功能实现方法和装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1360696A (zh) * | 1999-12-30 | 2002-07-24 | 皇家菲利浦电子有限公司 | 多任务处理软件体系结构 |
CN1549108A (zh) * | 2003-05-07 | 2004-11-24 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
-
2007
- 2007-12-27 CN CN2007103044158A patent/CN101470636B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1360696A (zh) * | 1999-12-30 | 2002-07-24 | 皇家菲利浦电子有限公司 | 多任务处理软件体系结构 |
CN1549108A (zh) * | 2003-05-07 | 2004-11-24 | 中兴通讯股份有限公司 | 一种实现通信过程零拷贝消息队列的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101470636A (zh) | 2009-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101470636B (zh) | 一种消息的读写方法和装置 | |
CA1277382C (en) | Inter-processor communication protocol | |
EP0798638B1 (en) | Periodic process scheduling method | |
US8402466B2 (en) | Practical contention-free distributed weighted fair-share scheduler | |
JP5309703B2 (ja) | 共有メモリの制御回路、制御方法及び制御プログラム | |
JPH03126158A (ja) | スケジユーリング方法及び装置 | |
US5606666A (en) | Method and apparatus for distributing control messages between interconnected processing elements by mapping control messages of a shared memory addressable by the receiving processing element | |
CN111813522B (zh) | 一种虚拟arinc 653仿真验证平台 | |
CN105426260A (zh) | 一种支持分布式系统的透明进程间通信系统及方法 | |
US20210311782A1 (en) | Thread scheduling for multithreaded data processing environments | |
CN103077147A (zh) | 一种基于链表的全功能1553b总线ip核 | |
CN112698959A (zh) | 一种多核通信方法和装置 | |
CN103324599A (zh) | 处理器间通信方法与系统级芯片 | |
CN101189579B (zh) | 用于多线程处理的使用信号量的方法和装置 | |
CN110147254A (zh) | 一种数据缓存处理方法、装置、设备及可读存储介质 | |
US20020040381A1 (en) | Automatic load distribution for multiple digital signal processing system | |
CN101634956B (zh) | 多核处理器消息调度方法及调度器 | |
CN102117261B (zh) | 一种芯片内部处理器之间的通信方法 | |
CN109426562B (zh) | 优先级加权轮转调度器 | |
CN115934385A (zh) | 一种多核核间通信方法、系统、设备及存储介质 | |
CN102073539B (zh) | 队列请求处理方法和装置 | |
CN109145397A (zh) | 一种支持并行流水访问的外存仲裁结构 | |
CN108418879A (zh) | 一种高可靠性的海量异构数据传输方法及系统 | |
CN117453365A (zh) | 物联网设备的任务调度方法及分布式任务调度系统 | |
CN112199205B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |