CN113157465B - 基于指针链表的消息发送方法及装置 - Google Patents

基于指针链表的消息发送方法及装置 Download PDF

Info

Publication number
CN113157465B
CN113157465B CN202110445792.3A CN202110445792A CN113157465B CN 113157465 B CN113157465 B CN 113157465B CN 202110445792 A CN202110445792 A CN 202110445792A CN 113157465 B CN113157465 B CN 113157465B
Authority
CN
China
Prior art keywords
descriptor
pointer
sending
state
packet
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
Application number
CN202110445792.3A
Other languages
English (en)
Other versions
CN113157465A (zh
Inventor
任秀江
曹志强
卢宏生
斯添浩
牟华先
周舟
李扬
冯冬明
周建毅
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN202110445792.3A priority Critical patent/CN113157465B/zh
Publication of CN113157465A publication Critical patent/CN113157465A/zh
Application granted granted Critical
Publication of CN113157465B publication Critical patent/CN113157465B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/544Buffers; 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)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例提供一种基于指针链表的消息发送方法及装置,所述方法包括:检测到相同异步信息发送队列时,向相同异步信息发送队列中添加指针链表;获取相同异步信息发送队列中的当前发送包,根据预设的发送顺序为当前发送包分配序号,获取当前发送包对应的描述符,根据描述符分配对应的悬挂缓冲编号;根据悬挂缓冲编号中的头部和尾部确定指针链表的头指针和尾指针;检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为新描述符,并将尾指针的位置修改为新描述符;接收所有描述符对应的应答包,完成相同异步信息发送。采用本方法能够保证节点间采用多端口发送的消息顺序正确,又能够充分发挥消息的并发性,提高消息引擎的处理效率。

Description

基于指针链表的消息发送方法及装置
技术领域
本发明涉及芯片信息发送技术领域,尤其涉及一种基于指针链表的消息发送方法及装置。
背景技术
NIC芯片主要用于高性能计算***和高速数据中心,是CPU连接高速网络的接口,实现节点间消息的发送和接收。
当前集成电路的飞速发展导致CPU处理器芯片的计算能力大幅提升,而互连网络的通信带宽提升一直依赖于高速信号传输速率的提高,远远落后于CPU处理器的通信需求。为提高CPU处理器的通信带宽,现代NIC芯片多采用多端口机制,即一个NIC芯片上配置多个网络端口,通过多网络端口并发,提高单个NIC芯片的通信带宽。多网络端口结构设计的优点是通过同时使用多个网络传输通道来提高消息传输带宽,但是多个网络端口在传输消息时是相互独立的,这样就会带来消息顺序无法保证的问题。
例如,节点A按照顺序向B发送消息1和消息2两个消息,A使用了通道1发送消息1,通道2发送消息2,由于通道1中发生阻塞,导致两个消息到达B的顺序变为消息2先于消息1到达。这样节点B接收到消息的顺序于节点A发出的消息不一致,节点A收到消息完成的顺序与消息发送顺序也不一致,这可能会导致通信语义发生变化,进而导致程序运行结果错误。如果采用简单的阻塞方式,即节点A先发送消息1,等消息完全结束后再发送消息2,虽然可以保证消息1和消息2之间的顺序,但是由于消息1和消息2之间完全串行执行,会降低消息传输的效率。尤其是当节点A的消息1后边还有需要发送给其他节点的消息时,发送给节点B的消息不应该阻塞发送给其他节点的消息处理,这样也会大大降低消息传输的效率。
因此,解决多端口互连网络***消息序的问题对提高通信性能保证正确的通信语义是目前亟待解决的问题。
发明内容
针对现有技术中存在的问题,本发明实施例提供一种基于指针链表的消息发送方法及装置。
本发明实施例提供一种基于指针链表的消息发送方法,包括:
检测到相同异步信息发送队列时,向所述相同异步信息发送队列中添加指针链表;
获取所述相同异步信息发送队列中的当前发送包,根据预设的发送顺序为所述当前发送包分配序号,并获取所述当前发送包对应的描述符,根据所述描述符分配对应的悬挂缓冲编号;
根据所述悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;
检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为所述新描述符,并将所述尾指针的位置修改为所述新描述符;
接收到所有描述符对应的应答包时,完成相同异步信息发送。
在其中一个实施例中,所述方法还包括:
检测所述当前尾指针对应的描述符的状态;
当所述当前尾指针对应的描述符处于发包状态时,将所述新描述符置为暂停状态;
当所述当前尾指针对应的描述符处于等待应答状态时,将所述新描述符置为发包状态。
在其中一个实施例中,所述方法还包括:
当检测到所述相同异步信息发送过程中存在应答包丢失情况时,获取存在所述应答包丢失情况的丢失描述符的下一描述符;
获取所述下一描述符的应答包,并根据所述下一描述符的应答包从所述头指针开始,至所述丢失描述符之前的所有描述符全部完成,并将所述头指针更新至所述丢失描述符的下一描述符。
在其中一个实施例中,所述方法还包括:
当检测到所述相同异步信息发送过程中存在应答包未响应的情况时,获取存在未响应情况的未响应描述符,将所述未响应描述符调度为重发状态;
获取所述未响应描述符的下一描述符,将所述未响应描述符的下一描述符修改为等待发包状态,并将所述头指针更新至所述未响应描述符。
在其中一个实施例中,所述方法还包括:
当检测到所述相同异步信息发送过程中出现超时重传现象时,从所述头指针对应的描述符至所述尾指针对应的描述符,依次判断是否存在描述符处于发包状态;
当所述描述符都处于等待应答状态时,进行信息重传;
当存在描述符处于发包状态,等待处于所述描述符的发包状态结束,然后进行信息重传。
在其中一个实施例中,所述方法还包括:
根据所述悬挂缓冲的条目数调整所述指针链表的大小。
本发明实施例提供一种基于指针链表的消息发送装置,包括:
检测模块,用于检测到相同异步信息发送队列时,向所述相同异步信息发送队列中添加指针链表;
获取模块,用于获取所述相同异步信息发送队列中的当前发送包,根据预设的发送顺序为所述当前发送包分配序号,并获取所述当前发送包对应的描述符,根据所述描述符分配对应的悬挂缓冲编号;
指针确定模块,用于根据所述悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;
修改模块,用于检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为所述新描述符,并将所述尾指针的位置修改为所述新描述符;
接收模块,用于接收到所有描述符对应的应答包时,完成相同异步信息发送。
在其中一个实施例中,所述装置还包括:
第二检测模块,用于检测所述当前尾指针对应的描述符的状态;
第一状态模块,用于当所述当前尾指针对应的描述符处于发包状态时,将所述新描述符置为暂停状态;
第二状态模块,用于当所述当前尾指针对应的描述符处于等待应答状态时,将所述新描述符置为发包状态。
本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述基于指针链表的消息发送方法的步骤。
本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述基于指针链表的消息发送方法的步骤。
本发明实施例提供的基于指针链表的消息发送方法及装置,检测到相同异步信息发送队列时,向相同异步信息发送队列中添加指针链表;获取相同异步信息发送队列中的当前发送包,根据预设的发送顺序为当前发送包分配序号,并获取当前发送包对应的描述符,根据描述符分配对应的悬挂缓冲编号;根据悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为新描述符,并将尾指针的位置修改为新描述符;接收到所有描述符对应的应答包时,完成相同异步信息发送。这样既能够保证节点间采用多端口发送的消息顺序正确,又能够充分发挥消息的并发性,提高消息引擎的处理效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中基于指针链表的消息发送方法的流程图;
图2为本发明实施例中基于指针链表的消息发送装置的结构图;
图3为本发明实施例中电子设备结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的定制家具信息化管控信息流的流转方法的流程示意图,如图1所示,本发明实施例提供了一种定制家具信息化管控信息流的流转方法,包括:
步骤S101,检测到相同异步信息发送队列时,向所述相同异步信息发送队列中添加指针链表。
具体地,在检测到NIC芯片存在相同异步消息发送队列的消息非阻塞发送时,向相同异步信息发送队列中添加指针链表,通过指针链表来管理同一个队列有多个描述符发往相同目标的情况。
步骤S102,获取所述相同异步信息发送队列中的当前发送包,根据预设的发送顺序为所述当前发送包分配序号,并获取所述当前发送包对应的描述符,根据所述描述符分配对应的悬挂缓冲编号。
具体地,获取相同异步信息发送队列中的当前发送包,并根据预设的发送顺序为当前发送包分配序号,比如3个发送包按照1、2、3的顺序发送,则为当前发送包分配1、2、3的顺序编号,并获取当前发送包对应的描述符,描述符为与发送包对应的文件描述符(文件描述符是一个索引值,指向内核为每一个发送包对应的记录表),并根据描述符分配对应的悬挂缓冲(描述符缓存),并为悬挂缓冲分配悬挂缓冲编号,具体的编号分配可以是根据发送包的编号进行分配,得到对应的描述符1、2、3。另外,指针链表的大小根据悬挂缓冲的条目数调整。
步骤S103,根据所述悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针。
具体地,根据当前发送包,即当前悬挂缓冲编号中的头部和尾部对应的确定指针链表的头指针和尾指针,保证当前发送包能够按照预设的发送顺序发送。
步骤S104,检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为所述新描述符,并将所述尾指针的位置修改为所述新描述符。
具体地,当检测到新描述符进行悬挂缓冲时,说明存在新的发送包需要发送,则对新的报送宝对应的新描述符进行发送顺序的处理,包括:修改当前尾指针对应的描述符的next为新描述符,并将尾指针的位置修改为新描述符,其中,描述符的next指的是描述符的指向,比如描述符1的next为描述符2,在描述符1接收到与描述符1对应的应答包时,根据描述符1的next,对应发送描述符2。
另外,当检测到新描述符进行悬挂缓冲时,还可以调整新描述符的状态,具体为:检测当前尾指针对应的描述符的状态,当当前尾指针对应的描述符处于发包状态时,说明新描述符之前的描述符还未发包完毕,则将新描述符置为暂停状态,当当前尾指针对应的描述符处于等待应答状态时,说明新描述符之前的描述符已经发包完毕,则将新描述符置为发包状态。
步骤S105,接收到所有描述符对应的应答包时,完成相同异步信息发送。
具体地,当接收到所有描述符(包括当前描述符和新描述符)对应的应答包时,并根据所有描述符对应的应答包进行确认,确认保证了应答包按照预定的顺序进行发明,也说明需要传输的信息已经传输完毕,完成相同异步信息发送的步骤。
本发明实施例提供的一种基于指针链表的消息发送方法,检测到相同异步信息发送队列时,向相同异步信息发送队列中添加指针链表;获取相同异步信息发送队列中的当前发送包,根据预设的发送顺序为当前发送包分配序号,并获取当前发送包对应的描述符,根据描述符分配对应的悬挂缓冲编号;根据悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为新描述符,并将尾指针的位置修改为新描述符;接收到所有描述符对应的应答包时,完成相同异步信息发送。这样既能够保证节点间采用多端口发送的消息顺序正确,又能够充分发挥消息的并发性,提高消息引擎的处理效率。
在上述实施例的基础上,所述基于指针链表的消息发送方法,还包括:
当检测到所述相同异步信息发送过程中存在应答包丢失情况时,获取存在所述应答包丢失情况的丢失描述符的下一描述符;
获取所述下一描述符的应答包,并根据所述下一描述符的应答包从所述头指针开始,至所述丢失描述符之前的所有描述符全部完成,并将所述头指针更新至所述丢失描述符的下一描述符。
本发明实施例中,在发送包的相同异步信息发送过程中,可能会出现某个描述符对应的应答包丢失的情况,其中,应答包丢失的情况可以是检测到应答包的回复顺序与对应的描述符发送顺序不同时,说明出现应答包丢失的情况,获取应答包丢失情况的丢失描述符的下一描述符,获取下一描述符的应答包,根据响应的合并确认原则,将下一描述符之前的描述符(包含丢失描述符)全部完成,即已经完成发送,然后将头指针更新至丢失描述符的下一描述符。
另外,在发送包的相同异步信息发送过程中,也可能会出现,比如应答包中包含对描述符的重传指令,则应答包对应的描述符为重传描述符,获取存在重传指令的重传描述符,将重传描述符调度为重发状态,获取重传描述符的下一描述符,将重传描述符的下一描述符修改为等待发包状态,重新发送,并将头指针更新至重传描述符。
另外,在发送包的相同异步信息发送过程中,也可能会出现超时重传的情况,如果发生超时重传,需要从头指针所在的描述符开始判断是否有描述符处于发包状态,如果都是等待应答状态则可以开始重传,否则将自己的状态置位暂停等待发包状态。重传结束检查后继描述符是否处于等待发包状态,如是要调度后继描述符开始发包。
本发明实施例对相同异步信息发送过程中,可能出现的应答包丢失、应答包未响应、超时重传的情况进行对应的处理,保证节点间采用多端口发送的消息顺序正确。
图2为本发明实施例提供的一种基于指针链表的消息发送装置,包括:检测模块S201、获取模块S202、指针确定模块S203、修改模块S204、接收模块S205,其中:
检测模块S201,用于检测到相同异步信息发送队列时,向所述相同异步信息发送队列中添加指针链表。
获取模块S202,用于获取所述相同异步信息发送队列中的当前发送包,根据预设的发送顺序为所述当前发送包分配序号,并获取所述当前发送包对应的描述符,根据所述描述符分配对应的悬挂缓冲编号。
指针确定模块S203,用于根据所述悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针。
修改模块S204,用于检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为所述新描述符,并将所述尾指针的位置修改为所述新描述符。
接收模块S205,用于接收到所有描述符对应的应答包时,完成相同异步信息发送。
在一个实施例中,装置还可以包括:
第二检测模块,用于检测所述当前尾指针对应的描述符的状态。
第一状态模块,用于当所述当前尾指针对应的描述符处于发包状态时,将所述新描述符置为暂停状态。
第二状态模块,用于当所述当前尾指针对应的描述符处于等待应答状态时,将所述新描述符置为发包状态。
在一个实施例中,装置还可以包括:
第三检测模块,用于当检测到所述相同异步信息发送过程中存在应答包丢失情况时,获取存在所述应答包丢失情况的丢失描述符的下一描述符。
第二获取模块,用于获取所述下一描述符的应答包,并根据所述下一描述符的应答包从所述头指针开始,至所述丢失描述符的所有描述符全部完成,并将所述头指针更新至所述丢失描述符的下一描述符。
在一个实施例中,装置还可以包括:
第四检测模块,用于当检测到所述相同异步信息发送过程中存在应答包未响应的情况时,获取存在未响应情况的未响应描述符,将所述未响应描述符调度为重发状态。
第三获取模块,用于获取所述未响应描述符的下一描述符,将所述未响应描述符的下一描述符修改为等待发包状态,并将所述头指针更新至所述未响应描述符。
在一个实施例中,装置还可以包括:
第五检测模块,用于当检测到所述相同异步信息发送过程中出现超时重传现象时,从所述头指针对应的描述符至所述尾指针对应的描述符,依次判断是否存在描述符处于发包状态。
重传模块,用于当所述描述符都处于等待应答状态时,进行信息重传。
等待模块,用于当存在描述符处于发包状态,等待处于所述描述符的发包状态结束,然后进行信息重传。
关于基于指针链表的消息发送装置的具体限定可以参见上文中对于定制家具信息化管控信息流的流转方法的限定,在此不再赘述。上述基于指针链表的消息发送装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
图3示例了一种电子设备的实体结构示意图,如图3所示,该电子设备可以包括:处理器(processor)301、存储器(memory)302、通信接口(Communications Interface)303和通信总线304,其中,处理器301,存储器302,通信接口303通过通信总线304完成相互间的通信。处理器301可以调用存储器302中的逻辑指令,以执行如下方法:检测到相同异步信息发送队列时,向相同异步信息发送队列中添加指针链表;获取相同异步信息发送队列中的当前发送包,根据预设的发送顺序为当前发送包分配序号,并获取当前发送包对应的描述符,根据描述符分配对应的悬挂缓冲编号;根据悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为新描述符,并将尾指针的位置修改为新描述符;接收到所有描述符对应的应答包时,完成相同异步信息发送。
此外,上述的存储器302中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:检测到相同异步信息发送队列时,向相同异步信息发送队列中添加指针链表;获取相同异步信息发送队列中的当前发送包,根据预设的发送顺序为当前发送包分配序号,并获取当前发送包对应的描述符,根据描述符分配对应的悬挂缓冲编号;根据悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为新描述符,并将尾指针的位置修改为新描述符;接收到所有描述符对应的应答包时,完成相同异步信息发送。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (7)

1.一种基于指针链表的消息发送方法,其特征在于,包括:
检测到相同异步信息发送队列时,向所述相同异步信息发送队列中添加指针链表;
获取所述相同异步信息发送队列中的当前发送包,根据预设的发送顺序为所述当前发送包分配序号,并获取所述当前发送包对应的描述符,根据所述描述符分配对应的悬挂缓冲编号;
根据所述悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;
检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为所述新描述符,并将所述尾指针的位置修改为所述新描述符;
接收到所有描述符对应的应答包时,完成相同异步信息发送;
当检测到所述相同异步信息发送过程中存在应答包丢失情况时,获取存在所述应答包丢失情况的丢失描述符的下一描述符;
获取所述下一描述符的应答包,并根据所述下一描述符的应答包从所述头指针开始,至所述丢失描述符之前的所有描述符全部完成,并将所述头指针更新至所述丢失描述符的下一描述符;
当检测到所述相同异步信息发送过程中存在应答包未响应的情况时,获取存在未响应情况的未响应描述符,将所述未响应描述符调度为重发状态;
获取所述未响应描述符的下一描述符,将所述未响应描述符的下一描述符修改为等待发包状态,并将所述头指针更新至所述未响应描述符;
当检测到所述相同异步信息发送过程中出现超时重传现象时,从所述头指针对应的描述符至所述尾指针对应的描述符,依次判断是否存在描述符处于发包状态;
当所述描述符都处于等待应答状态时,进行信息重传;
当存在描述符处于发包状态,等待处于所述描述符的发包状态结束,然后进行信息重传。
2.根据权利要求1所述的基于指针链表的消息发送方法,其特征在于,所述检测到新描述符进行悬挂缓冲时,还包括:
检测所述当前尾指针对应的描述符的状态;
当所述当前尾指针对应的描述符处于发包状态时,将所述新描述符置为暂停状态;
当所述当前尾指针对应的描述符处于等待应答状态时,将所述新描述符置为发包状态。
3.根据权利要求1所述的基于指针链表的消息发送方法,其特征在于,所述方法,还包括:
根据所述悬挂缓冲的条目数调整所述指针链表的大小。
4.一种基于指针链表的消息发送装置,其特征在于,所述装置包括:
检测模块,用于检测到相同异步信息发送队列时,向所述相同异步信息发送队列中添加指针链表;
获取模块,用于获取所述相同异步信息发送队列中的当前发送包,根据预设的发送顺序为所述当前发送包分配序号,并获取所述当前发送包对应的描述符,根据所述描述符分配对应的悬挂缓冲编号;
指针确定模块,用于根据所述悬挂缓冲编号中的头部和尾部确定所述指针链表的头指针和尾指针;
修改模块,用于检测到新描述符进行悬挂缓冲时,修改当前尾指针对应的描述符的next为所述新描述符,并将所述尾指针的位置修改为所述新描述符;
接收模块,用于接收到所有描述符对应的应答包时,完成相同异步信息发送;
当检测到所述相同异步信息发送过程中存在应答包丢失情况时,获取存在所述应答包丢失情况的丢失描述符的下一描述符;
获取所述下一描述符的应答包,并根据所述下一描述符的应答包从所述头指针开始,至所述丢失描述符之前的所有描述符全部完成,并将所述头指针更新至所述丢失描述符的下一描述符;
当检测到所述相同异步信息发送过程中存在应答包未响应的情况时,获取存在未响应情况的未响应描述符,将所述未响应描述符调度为重发状态;
获取所述未响应描述符的下一描述符,将所述未响应描述符的下一描述符修改为等待发包状态,并将所述头指针更新至所述未响应描述符;
当检测到所述相同异步信息发送过程中出现超时重传现象时,从所述头指针对应的描述符至所述尾指针对应的描述符,依次判断是否存在描述符处于发包状态;
当所述描述符都处于等待应答状态时,进行信息重传;
当存在描述符处于发包状态,等待处于所述描述符的发包状态结束,然后进行信息重传。
5.根据权利要求4中所述的基于指针链表的消息发送装置,其特征在于,所述装置还包括:
第二检测模块,用于检测所述当前尾指针对应的描述符的状态;
第一状态模块,用于当所述当前尾指针对应的描述符处于发包状态时,将所述新描述符置为暂停状态;
第二状态模块,用于当所述当前尾指针对应的描述符处于等待应答状态时,将所述新描述符置为发包状态。
6.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至3任一项所述基于指针链表的消息发送方法的步骤。
7.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至3任一项所述基于指针链表的消息发送方法的步骤。
CN202110445792.3A 2021-04-25 2021-04-25 基于指针链表的消息发送方法及装置 Active CN113157465B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110445792.3A CN113157465B (zh) 2021-04-25 2021-04-25 基于指针链表的消息发送方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110445792.3A CN113157465B (zh) 2021-04-25 2021-04-25 基于指针链表的消息发送方法及装置

Publications (2)

Publication Number Publication Date
CN113157465A CN113157465A (zh) 2021-07-23
CN113157465B true CN113157465B (zh) 2022-11-25

Family

ID=76870811

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110445792.3A Active CN113157465B (zh) 2021-04-25 2021-04-25 基于指针链表的消息发送方法及装置

Country Status (1)

Country Link
CN (1) CN113157465B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114185693A (zh) * 2021-11-22 2022-03-15 西安空间无线电技术研究所 一种可自修复的多结点聚合共享队列管理方法
CN117675720B (zh) * 2024-01-31 2024-05-31 井芯微电子技术(天津)有限公司 消息报文传输方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150304124A1 (en) * 2012-10-12 2015-10-22 Zte Corporation Message Processing Method and Device
CN106302238A (zh) * 2015-05-13 2017-01-04 深圳市中兴微电子技术有限公司 一种队列管理方法及装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150304124A1 (en) * 2012-10-12 2015-10-22 Zte Corporation Message Processing Method and Device
CN106302238A (zh) * 2015-05-13 2017-01-04 深圳市中兴微电子技术有限公司 一种队列管理方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《Hybrid limited-pointer linked-list cache directory and cache coherence protocol》;Mostafa Mahmoud 等;《2013 Second International Japan-Egypt Conference on Electronics, Communications and Computers (JEC-ECC)》;20131231;全文 *
《稀疏矩阵带行指针数组的单链表存储结构及相加算法实现》;邬恩杰 等;《电脑知识与技术》;20161231;全文 *

Also Published As

Publication number Publication date
CN113157465A (zh) 2021-07-23

Similar Documents

Publication Publication Date Title
CN107959636B (zh) Bgp消息的发送方法及装置
CN101867511B (zh) 流控帧发送方法、相关设备及***
CN113157465B (zh) 基于指针链表的消息发送方法及装置
CN108737296B (zh) 一种数据传输方法、装置和网络设备
CN101616083A (zh) 一种报文转发方法和装置
CN110661725A (zh) 用于对出口上的网络分组进行重排序的技术
CN113485822A (zh) 内存管理方法、***、客户端、服务器及存储介质
CN103986585A (zh) 报文预处理方法及其装置
JP2014033339A (ja) データ送信装置、通信制御方法、及び通信制御プログラム
CN115934625B (zh) 一种用于远程直接内存访问的敲门铃方法、设备及介质
CN108304272B (zh) 一种数据io请求的处理方法及装置
CN112040001A (zh) 一种基于分布式存储的请求处理方法及装置
US10305772B2 (en) Using a single work item to send multiple messages
CN116204487A (zh) 远程数据访问方法及装置
CN112765087A (zh) 用于在多个处理器之间使通信同步的***和方法
CN111740922A (zh) 数据传输方法、装置、电子设备及介质
KR20170117326A (ko) 랜덤 액세스 메모리를 포함하는 하나 이상의 처리 유닛을 위한 직접 메모리 액세스 제어 장치
CN107920035B (zh) 用于确定***换式以太网的多核处理器类型装置、***及运载工具
US9338219B2 (en) Direct push operations and gather operations
CN107547452B (zh) 一种分布式通信设备及其报文转发方法和装置
CN115955441A (zh) 一种基于tsn队列的管理调度方法、装置
US9128785B2 (en) System and method for efficient shared buffer management
WO2017016300A1 (zh) 令牌申请处理方法、装置和计算机存储介质
JP6531750B2 (ja) 送信装置
CN111130968A (zh) 一种解决Modbus总线通信粘包的方法及终端

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
GR01 Patent grant
GR01 Patent grant