CN116820801A - Io多路复用机制的优化方法、装置及设备 - Google Patents
Io多路复用机制的优化方法、装置及设备 Download PDFInfo
- Publication number
- CN116820801A CN116820801A CN202310716375.7A CN202310716375A CN116820801A CN 116820801 A CN116820801 A CN 116820801A CN 202310716375 A CN202310716375 A CN 202310716375A CN 116820801 A CN116820801 A CN 116820801A
- Authority
- CN
- China
- Prior art keywords
- thread
- request message
- user
- protocol stack
- message
- 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
- 230000007246 mechanism Effects 0.000 title claims abstract description 69
- 238000000034 method Methods 0.000 title claims abstract description 52
- 238000005457 optimization Methods 0.000 title claims abstract description 38
- 238000012512 characterization method Methods 0.000 claims description 21
- 238000004590 computer program Methods 0.000 claims description 9
- 238000005538 encapsulation Methods 0.000 claims description 9
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000000903 blocking effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000013467 fragmentation Methods 0.000 description 1
- 238000006062 fragmentation reaction Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Computer And Data Communications (AREA)
Abstract
本公开涉及一种IO多路复用机制的优化方法、装置及设备。本公开通过让用户线程将需要对IO多路复用机制监听的事件集合进行的更新操作封装为请求消息,然后将请求消息发送给用户态的协议栈线程,让协议栈线程可以根据接收到的请求消息对上述事件集合执行对应的更新操作,之后将更新操作的操作结果返回给用户线程,使得多个用户线程之间以及用户线程和协议栈线程之间可能并发执行的操作均由协议栈线程执行,避免IO多路复用机制下多线程并发访问时的加锁操作,从而提升系统整体性能。
Description
技术领域
本公开涉及通信技术领域,具体涉及一种IO多路复用机制的优化方法、装置及设备。
背景技术
用户态的协议栈是目前高性能服务器端常用的解决方案,它够解决传统的内核协议栈由于锁的竞争和缓存未命中(cache miss)导致的性能低的问题,IO多路复用机制是高性能网络服务器的必备技术,nginx,redis和大部分游戏服务器都使用到这一多路复用技术。对于用户态协议栈而言,IO多路复用技术的设计好坏对于服务端性能的高低起着至关重要的作用。
IO多路复用技术的实现通常依赖于监听事件集合,多个用户线程会不断地往该事件集合添加或者删除事件。由于用户线程与用户线程之间、用户线程与协议栈线程之间都会存在同时操作该事件集合的场景,因此在操作时都需要进行加锁,但是加锁会降低整体性能。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种IO多路复用机制的优化方法、装置及设备。
第一方面,本公开提供了一种IO多路复用机制的优化方法,适用于用户态的协议栈线程,所述方法包括:
接收用户线程发送的请求消息;
根据所述请求消息对IO多路复用机制监听的事件集合执行所述请求消息对应的更新操作,得到操作结果;
向所述用户线程返回所述操作结果。
可选的,所述接收用户线程发送的请求消息之前,还包括:
创建消息队列,所述消息队列用于接收用户线程发送的请求消息;
所述接收用户线程发送的请求消息,包括:
轮询所述消息队列,以查找所述消息队列中接收的所述请求消息。
可选的,所述接收用户线程发送的请求消息之前,还包括:
创建消息资源内存池,所述消息资源内存池用于为用户线程提供消息对象;
所述得到操作结果之后,还包括:
释放所述请求消息的消息对象至所述消息资源内存池。
可选的,所述向所述用户线程返回所述操作结果,包括:
向返回值地址写入所述操作结果的表征值,所述返回值地址为所述用户线程和所述协议栈线程的共享地址。
第二方面,本公开提供了一种IO多路复用机制的优化方法,适用于用户线程,所述方法包括:
响应于向IO多路复用机制监听的事件集合发起更新操作,将所述更新操作封装为对应的请求消息;
向用户态的协议栈线程发送所述请求消息,以使所述协议栈线程根据所述请求消息对所述事件集合执行所述更新操作;
接收所述协议栈线程返回的操作结果。
可选的,所述将所述更新操作封装为对应的请求消息,包括:
向所述协议栈线程创建的消息资源内存池申请消息对象;
向所述消息对象填充所述更新操作的操作类型和操作参数,以形成所述请求消息。
可选的,所述接收所述协议栈线程返回的操作结果,包括:
读取返回值地址中写入的表征值,确定所述表征值对应的操作结果。
第三方面,本公开提供了一种IO多路复用机制的优化装置,适用于用户态的协议栈线程,所述装置包括:
第一接收模块,用于接收用户线程发送的请求消息;
执行模块,用于根据所述请求消息对IO多路复用机制监听的事件集合执行所述请求消息对应的更新操作,得到操作结果;
返回模块,用于向所述用户线程返回所述操作结果。
可选的,所述装置还包括创建模块,用于在所述接收用户线程发送的请求消息之前,创建消息队列,所述消息队列用于接收用户线程发送的请求消息;
所述第一接收模块在接收用户线程发送的请求消息时,具体用于轮询所述消息队列,以查找所述消息队列中接收的所述请求消息。
可选的,所述创建模块在接收用户线程发送的请求消息之前,还用于创建消息资源内存池,所述消息资源内存池用于为用户线程提供消息对象;
所述执行模块在得到操作结果之后,还用于释放所述请求消息的消息对象至所述消息资源内存池。
可选的,所述返回模块在向所述用户线程返回所述操作结果时,具体用于向返回值地址写入所述操作结果的表征值,所述返回值地址为所述用户线程和所述协议栈线程的共享地址。
第四方面,本公开提供了一种IO多路复用机制的优化装置,适用于用户线程,所述装置包括:
封装模块,用于响应于向IO多路复用机制监听的事件集合发起更新操作,将所述更新操作封装为对应的请求消息;
发送模块,用于向用户态的协议栈线程发送所述请求消息,以使所述协议栈线程根据所述请求消息对所述事件集合执行所述更新操作;
第二接收模块,用于接收所述协议栈线程返回的操作结果。
可选的,所述封装模块在将所述更新操作封装为对应的请求消息时,具体用于向所述协议栈线程创建的消息资源内存池申请消息对象;向所述消息对象填充所述更新操作的操作类型和操作参数,以形成所述请求消息。
可选的,所述第二接收模块在接收所述协议栈线程返回的操作结果时,具体用于读取返回值地址中写入的表征值,确定所述表征值对应的操作结果。
第五方面,本公开提供了一种电子设备,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如第一方面和第二方面中任一项所述的方法。
第六方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面和第二方面中任一项所述的方法。
本公开提供的技术方案与现有技术相比具有如下优点:
本公开提供的IO多路复用机制的优化方法、装置及设备,通过让用户线程将需要对IO多路复用机制监听的事件集合进行的更新操作封装为请求消息,然后将请求消息发送给用户态的协议栈线程,让协议栈线程可以根据接收到的请求消息对上述事件集合执行对应的更新操作,之后将更新操作的操作结果返回给用户线程,使得多个用户线程之间以及用户线程和协议栈线程之间可能并发执行的操作均由协议栈线程执行,因为单一线程向事件集合执行操作不存在数据竞争问题,所以无需加锁,从而避免IO多路复用机制下多线程并发访问时的加锁操作,从而提升系统整体性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例提供的一种应用场景的示意图;
图2为本公开实施例提供的一种IO多路复用机制的优化方法流程图;
图3为本公开实施例提供的又一种IO多路复用机制的优化方法流程图;
图4为本公开实施例提供的一种IO多路复用机制的优化装置的结构示意图;
图5为本公开实施例提供的又一种IO多路复用机制的优化装置的结构示意图;
图6为本公开实施例提供的电子设备的结构示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开实施例提供的一种应用场景的示意图。如图1所示,该场景中包括用户态的协议栈线程110、用户线程120、IO多路复用机制监听的事件集合130、返回值地址140以及协议栈线程110创建的消息队列111和消息资源内存池112。其中,IO多路复用机制是协议栈线程110提供的一个功能,用户线程可以通过往事件集合130中添加或删除事件实现IO多路复用机制,提高程序的并发性和效率。为了便于解释,以下实施例以图1所示的一个用户线程和一个用户态协议栈线程的交互场景进行举例说明,通常情况下用户线程可以有多个,多个用户线程可能位于CPU的不同内核(core),用户线程和用户态协议栈线程也可能位于不同内核,本公开实施例对此不作限定。
图2为本公开实施例提供的一种IO多路复用机制的优化方法流程图,该方法适用于用户态的协议栈线程,该方法可以由适用于用户态协议栈线程的IO多路复用机制的优化装置执行,该IO多路复用机制的优化装置可配置于电子设备中,例如服务器。如图1所示的用户态的协议栈线程110可以执行该方法,参照图2,该方法包括如下步骤:
S201、接收用户线程发送的请求消息。
参照图1,在用户线程120需要向IO多路复用机制监听的事件集合130发起更新操作时,更新操作包括向事件集合添加、修改或删除事件等,例如该更新操作是向事件集合130中添加某个事件,该事件是用户线程120向其它终端设备传输图片数据,用户线程120将添加该事件的操作封装为请求消息,将请求消息发送给协议栈线程110,协议栈线程110接收该请求消息。
在一些实施例中,接收用户线程发送的请求消息之前,还包括:创建消息队列和/或消息资源内存池,消息队列用于接收用户线程发送的请求消息,消息资源内存池用于为用户线程提供消息对象。
IO多路复用机制开启时,协议栈线程110会创建消息队列111和/或消息资源内存池112。协议栈线程110可以通过消息队列111接收用户线程120发送的请求消息,由此可以提高系统的并发性能、降低系统的复杂度。
消息资源内存池112则是可以为用户线程120提供消息对象,使得用户线程120可以向消息资源内存池112申请消息对象,消息对象通常也可以称之为消息结构体或消息包,用于封装一次通信的数据和信息,本公开实施例中消息对象具体用于封装更新操作的信息,消息对象通常可以包含操作类型、操作参数、时间戳等信息,其中操作类型和操作参数基于用户线程120需要进行的更新操作填充,例如操作类型可以是添加或删除,操作参数可以是要添加的事件数据或要删除的事件数据等。用户线程可以通过消息对象将更新操作封装为请求消息,由此可以避免动态分配内存的开销和内存碎片问题,提高系统的性能和效率,同时还可以降低系统复杂度,提高系统的并发性能。此外,协议栈线程在创建消息队列时同时会初始化消息资源内存池。
在一种实施方式中,接收用户线程发送的请求消息,包括:轮询消息队列,以查找消息队列中接收的请求消息。
协议栈线程110创建了消息队列111后,用户线程120将封装更新操作得到的请求消息放入消息队列111,协议栈线程110轮询消息队列111查找其中接收的请求消息,也就是协议栈线程110在每轮循环时查看消息队列111中是否有请求消息需要处理。通过轮询消息队列获取需处理的请求消息,可以有效地避免阻塞或线程等待,从而减少系统延迟。
S202、根据请求消息对IO多路复用机制监听的事件集合执行请求消息对应的更新操作,得到操作结果。
协议栈线程110获取到请求消息后,根据请求消息对IO多路复用机制监听的事件集合130执行请对应的更新操作,该对应的更新操作是指用户120封装的更新操作,得到执行该更新操作的操作结果。由协议栈线程根据请求消息执行用户线程需要执行的更新操作,更新操作均由协议栈线程执行则可以避免多个用户线程之间以及用户线程与协议栈线程之间可能并发执行的操作,从而避免多线程同时访问和修改共享的变量或数据结构可能导致的数据竞争(Data Race)问题。
例如,用户线程120需要将事件A添加到事件集合130,更新操作对应的操作类型是“添加”,更新操作对应的操作参数是“事件A”。相应的,用户线程120在将操作请求封装成请求消息时,就会在消息对象中的操作类型填充“添加”,在消息对象中的操作参数填充“事件A”,形成操作请求B。
协议栈线程110获取到请求消息B后,读取操作请求消息B,确定此次更新操作的操作类型为“添加”,操作参数是“事件A”,然后向事件集合130执行“添加事件A”的更新操作,将事件A添加到事件集合130。对事件集合删除事件和修改事件的实现过程与上述实施例类似,此次不做赘述。
在一些实施例中,在得到操作结果之后,还包括:释放请求消息的消息对象至消息资源内存池。
本公开实施例中,用户线程120可以通过向消息资源内存池112申请消息对象封装更新操作,相应的,协议栈线程110在读取请求消息执行对应的更新操作后,协议栈线程110会将请求消息的消息对象放回消息资源内存池112,由此可以降低系统的内存开销,提高系统的稳定性和代码的可维护性。
S203、向用户线程返回操作结果。
协议栈线程110向用户线程120返回执行对应更新操作得到的操作结果,该操作结果可以表示更新操作是否执行成功,例如可以通过回调函数、共享内存等方式返回操作结果给用户线程。
在一种实施方式中,向用户线程返回操作结果,包括:向返回值地址写入操作结果的表征值,返回值地址为用户线程和协议栈线程的共享地址。
本公开实施例中,协议栈线程110通过返回值地址向用户线程120返回操作结果。具体的,在用户线程120可以在请求消息中预留一个返回值地址140,协议栈线程110在处理请求消息并得到操作结果后,可以将操作结果的表征值写入返回值地址140,用户线程120通过访问返回值地址140读取其中的表征值来获取操作结果,该表征值是指表示操作结果的返回值。通常情况下返回值地址140是用户线程120和协议栈线程110的共享地址,通过这种方式返回操作结果没有额外的开销。
例如,协议栈线程110执行请求消息对应的更新操作后得到的操作结果为“执行成功”,“执行成功”可以用1表示,相应的“执行失败”可以用0表示。协议栈线程110向返回值地址140中写入表征值1,用户线程120读取到返回值地址140中的表征值1就可以确定更新操作执行成功。
本公开实施例通过接收用户线程发送的请求消息,然后根据请求消息对IO多路复用机制监听的事件集合执行对应的更新操作,之后将更新操作的操作结果返回给用户线程,使得多个用户线程之间可能并发执行的操作,以及用户线程和协议栈线程之间可能并发执行的操作均由协议栈线程执行,因为单一线程向事件集合执行操作不存在数据竞争问题,所以无需加锁,从而避免IO多路复用机制下多线程并发访问时的加锁操作,从而提升系统整体性能。
图3为本公开实施例提供的一种IO多路复用机制的优化方法流程图,该方法适用于用户线程,该方法可以由适用于用户线程的IO多路复用机制的优化装置执行,该IO多路复用机制的优化装置同样可配置于服务器中。如图1所示的用户线程120可以执行该方法,参照图3,该方法包括如下步骤:
S301、响应于向IO多路复用机制监听的事件集合发起更新操作,将更新操作封装为对应的请求消息。
用户线程120在需要向IO多路复用机制监听的事件集合130发起更新操作时,用户线程120将添加事件的操作封装为对应的请求消息。例如,用户线程120需要在事件集合130添加事件,可以通过申请消息对象、函数封装、Builder模式(创建者模式)等方式将添加事件的操作封装为请求消息。
在一些实施例中,将更新操作封装为对应的请求消息,包括:向协议栈线程创建的消息资源内存池申请消息对象;向消息对象填充更新操作的操作类型和操作参数,以形成请求消息。
本公开实施例中,协议栈线程110在IO多路复用机制开启时创建了消息资源内存池112,用户线程120可以通过向消息资源内存池112申请消息对象来将更新操作封装为请求消息。
例如,用户线程120需要将事件A添加到事件集合130,更新操作对应的操作类型是“添加”,更新操作对应的操作参数是“事件A”。用户线程120向消息资源内存池112申请一个消息对象,然后在消息对象中填充更新操作对应的操作类型“添加”和操作参数“事件A”,从而形成操作请求B。通过向消息资源内存池申请消息对象来将更新操作封装为请求消息,可以增加代码的复用性和可维护性,优化内存管理,降低系统的复杂度,并提高系统的并发性能和稳定性。
S302、向用户态的协议栈线程发送请求消息,以使协议栈线程根据请求消息对事件集合执行更新操作。
用户线程120将更新操作封装而成的请求消息发送给用户态的协议栈线程110,从而使协议栈线程110可以根据请求消息对IO多路复用机制监听的事件集合130执行该更新操作,避免多线程同时访问和修改共享的变量或数据结构可能导致的数据竞争问题。协议栈线程根据请求消息执行更新操作的实现原理及过程请参照S202,此处不作赘述。在一些实施例中,协议栈线程110创建了消息队列111,通过消息队列111接收请求消息,相应的用户线程120则会通过将请求消息放入消息队列111向协议栈线程110发送请求消息。
S303、接收协议栈线程返回的操作结果。
协议栈线程110在执行更新操作并得到操作结果后会向用户线程120返回操作结果,用户线程120接收返回的操作结果,确定更新操作是否执行成功。
在一些实施例中,接收协议栈线程返回的操作结果,包括:读取返回值地址中写入的表征值,确定表征值对应的操作结果。
协议栈线程110可以通过返回值地址140向用户线程120返回操作结果,用户线程120读取返回值地址140中写入的表征值,根据表征值确定对应的操作结果,其中,表征值是指表示操作结果的返回值。
例如,当用户线程120读取到返回值地址140中的表征值为1时,表征值1表示更新操作执行成功,用户线程120根据表征值1则可以确定更新操作执行成功。相应的,当用户线程120读取到返回值地址140中的表征值为0时,表征值0表示更新操作执行失败,用户线程120根据表征值0则可以确定更新操作执行失败。通过读取返回值地址的方式获取返回的操作结果没有额外的开销,可以提升系统性能。
本公开实施例在需要向IO多路复用机制监听的事件集合发起更新操作时,通过将更新操作封装为对应的请求消息,然后将请求消息发送给协议栈线程,由协议栈线程根据请求消息向IO多路复用机制监听的事件集合执行更新操作,使得用户线程和其它用户线程之间可能并发执行的操作,以及用户线程和协议栈线程之间可能并发执行的操作均由协议栈线程执行,因为单一线程向事件集合执行操作不存在数据竞争问题,所以无需加锁,从而避免IO多路复用机制下多线程并发访问时的加锁操作,提升系统整体性能。
图4为本公开实施例提供的一种IO多路复用机制的优化装置的结构示意图。该IO多路复用机制的优化装置可以是如服务器或终端等具有数据处理能力和通信能力的设备中的部件或组件。本公开实施例提供的IO多路复用机制的优化装置可以执行上述适用于用户态协议栈线程的IO多路复用机制的优化方法实施例提供的处理流程,如图4所示,该IO多路复用机制的优化装置400包括:
第一接收模块401,用于接收用户线程发送的请求消息;
执行模块402,用于根据请求消息对IO多路复用机制监听的事件集合执行请求消息对应的更新操作,得到操作结果;
返回模块403,用于向用户线程返回操作结果。
在一些实施例中,该装置还包括创建模块404,用于在接收用户线程发送的请求消息之前,创建消息队列,消息队列用于接收用户线程发送的请求消息;
第一接收模块401在接收用户线程发送的请求消息时,具体用于轮询消息队列,以查找消息队列中接收的请求消息。
在一些实施例中,创建模块404在接收用户线程发送的请求消息之前,还用于创建消息资源内存池,消息资源内存池用于为用户线程提供消息对象;
执行模块402在得到操作结果之后,还用于释放请求消息的消息对象至消息资源内存池。
在一些实施例中,返回模块403在向用户线程返回操作结果时,具体用于向返回值地址写入操作结果的表征值,返回值地址为用户线程和协议栈线程的共享地址。
图5为本公开实施例提供的一种IO多路复用机制的优化装置的结构示意图。该IO多路复用机制的优化装置可以是如服务器或终端等具有数据处理能力和通信能力的设备中的部件或组件。本公开实施例提供的IO多路复用机制的优化装置可以执行上述适用于用户线程的IO多路复用机制的优化方法实施例提供的处理流程,如图5所示,该IO多路复用机制的优化装置500包括:
封装模块501,用于响应于向IO多路复用机制监听的事件集合发起更新操作,将更新操作封装为对应的请求消息;
发送模块502,用于向用户态的协议栈线程发送请求消息,以使协议栈线程根据请求消息对事件集合执行更新操作;
第二接收模块503,用于接收协议栈线程返回的操作结果。
在一些实施例中,封装模块501在将更新操作封装为对应的请求消息时,具体用于向协议栈线程创建的消息资源内存池申请消息对象;向消息对象填充更新操作的操作类型和操作参数,以形成请求消息。
在一些实施例中,第二接收模块503在接收协议栈线程返回的操作结果时,具体用于读取返回值地址中写入的表征值,确定表征值对应的操作结果。
图4、图5所示实施例的IO多路复用机制的优化装置可用于执行上述方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图6为本公开实施例提供的电子设备的结构示意图。该电子设备可以是如上实施例所述的服务器。本公开实施例提供的电子设备可以执行IO多路复用机制的优化方法实施例提供的处理流程,如图6所示,电子设备600包括:存储器601、处理器602、计算机程序和通讯接口603;其中,计算机程序存储在存储器601中,并被配置为由处理器602执行如上所述的IO多路复用机制的优化方法。在特定实施例中,存储器601可以是非易失性固态存储器。在特定实施例中,存储器601包括只读存储器ROM(Read-Only Memory)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(Programmable ROM,PROM)、可擦除PROM(ElectricalProgrammable ROM,EPROM)、电可擦除PROM(Electrically Erasable Programmable ROM,EEPROM)、电可改写ROM(Electrically Alterable ROM,EAROM)或闪存,或者两个或及其以上这些的组合。
另外,本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行以实现上述实施例所述的IO多路复用机制的优化方法。其中,存储介质可以是非易失性/非临时性计算机可读存储介质,例如,非易失性/非临时性计算机可读存储介质可以是ROM、随机存取存储器(Random Access Memory,RAM)、光盘只读存储器(Compact Disc ROM,CD-ROM)、磁带、软盘和光数据存储设备等。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种IO多路复用机制的优化方法,适用于用户态的协议栈线程,其特征在于,所述方法包括:
接收用户线程发送的请求消息;
根据所述请求消息对IO多路复用机制监听的事件集合执行所述请求消息对应的更新操作,得到操作结果;
向所述用户线程返回所述操作结果。
2.如权利要求1所述的方法,其特征在于,所述接收用户线程发送的请求消息之前,还包括:
创建消息队列,所述消息队列用于接收用户线程发送的请求消息;
所述接收用户线程发送的请求消息,包括:
轮询所述消息队列,以查找所述消息队列中接收的所述请求消息。
3.如权利要求1所述的方法,其特征在于,所述接收用户线程发送的请求消息之前,还包括:
创建消息资源内存池,所述消息资源内存池用于为用户线程提供消息对象;
所述得到操作结果之后,还包括:
释放所述请求消息的消息对象至所述消息资源内存池。
4.如权利要求1所述的方法,其特征在于,所述向所述用户线程返回所述操作结果,包括:
向返回值地址写入所述操作结果的表征值,所述返回值地址为所述用户线程和所述协议栈线程的共享地址。
5.一种IO多路复用机制的优化方法,适用于用户线程,其特征在于,所述方法包括:
响应于向IO多路复用机制监听的事件集合发起更新操作,将所述更新操作封装为对应的请求消息;
向用户态的协议栈线程发送所述请求消息,以使所述协议栈线程根据所述请求消息对所述事件集合执行所述更新操作;
接收所述协议栈线程返回的操作结果。
6.如权利要求5所述的方法,其特征在于,所述将所述更新操作封装为对应的请求消息,包括:
向所述协议栈线程创建的消息资源内存池申请消息对象;
向所述消息对象填充所述更新操作的操作类型和操作参数,以形成所述请求消息。
7.如权利要求5所述的方法,其特征在于,所述接收所述协议栈线程返回的操作结果,包括:
读取返回值地址中写入的表征值,确定所述表征值对应的操作结果。
8.一种IO多路复用机制的优化装置,适用于用户态的协议栈线程,其特征在于,所述装置包括:
第一接收模块,用于接收用户线程发送的请求消息;
执行模块,用于根据所述请求消息对IO多路复用机制监听的事件集合执行所述请求消息对应的更新操作,得到操作结果;
返回模块,用于向所述用户线程返回所述操作结果。
9.一种IO多路复用机制的优化装置,适用于用户线程,其特征在于,所述装置包括:
封装模块,用于响应于向IO多路复用机制监听的事件集合发起更新操作,将所述更新操作封装为对应的请求消息;
发送模块,用于向用户态的协议栈线程发送所述请求消息,以使所述协议栈线程根据所述请求消息对所述事件集合执行所述更新操作;
第二接收模块,用于接收所述协议栈线程返回的操作结果。
10.一种电子设备,其特征在于,包括:
存储器;
处理器;以及
计算机程序;
其中,所述计算机程序存储在所述存储器中,并被配置为由所述处理器执行以实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310716375.7A CN116820801A (zh) | 2023-06-15 | 2023-06-15 | Io多路复用机制的优化方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310716375.7A CN116820801A (zh) | 2023-06-15 | 2023-06-15 | Io多路复用机制的优化方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116820801A true CN116820801A (zh) | 2023-09-29 |
Family
ID=88128576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310716375.7A Pending CN116820801A (zh) | 2023-06-15 | 2023-06-15 | Io多路复用机制的优化方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116820801A (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020257A (zh) * | 2012-12-21 | 2013-04-03 | 曙光信息产业(北京)有限公司 | 数据操作的实现方法和装置 |
CN104951357A (zh) * | 2014-03-28 | 2015-09-30 | 华为技术有限公司 | 并行用户态协议栈的管理方法和协议栈系统 |
US20180349209A1 (en) * | 2017-06-04 | 2018-12-06 | Apple Inc. | Multi-thread synchronization primitive |
CN111209123A (zh) * | 2019-12-26 | 2020-05-29 | 天津中科曙光存储科技有限公司 | 一种本地存储io协议栈数据交互方法和装置 |
CN112671760A (zh) * | 2020-12-22 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于Socket的客户端跨平台网络通信方法及其相关设备 |
CN113296974A (zh) * | 2020-08-31 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库访问方法、装置、电子设备及可读存储介质 |
-
2023
- 2023-06-15 CN CN202310716375.7A patent/CN116820801A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103020257A (zh) * | 2012-12-21 | 2013-04-03 | 曙光信息产业(北京)有限公司 | 数据操作的实现方法和装置 |
CN104951357A (zh) * | 2014-03-28 | 2015-09-30 | 华为技术有限公司 | 并行用户态协议栈的管理方法和协议栈系统 |
US20180349209A1 (en) * | 2017-06-04 | 2018-12-06 | Apple Inc. | Multi-thread synchronization primitive |
CN111209123A (zh) * | 2019-12-26 | 2020-05-29 | 天津中科曙光存储科技有限公司 | 一种本地存储io协议栈数据交互方法和装置 |
CN113296974A (zh) * | 2020-08-31 | 2021-08-24 | 阿里巴巴集团控股有限公司 | 数据库访问方法、装置、电子设备及可读存储介质 |
CN112671760A (zh) * | 2020-12-22 | 2021-04-16 | 平安普惠企业管理有限公司 | 基于Socket的客户端跨平台网络通信方法及其相关设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9898338B2 (en) | Network computer system and method for dynamically changing execution sequence of application programs | |
US9213562B2 (en) | Garbage collection safepoint system using non-blocking asynchronous I/O call to copy data when the garbage collection safepoint is not in progress or is completed | |
CN108776897B (zh) | 数据处理方法、装置、服务器及计算机可读存储介质 | |
CN110737534A (zh) | 任务的处理方法、装置和服务器 | |
EP2701059A1 (en) | Method and apparatus for loading application program | |
WO2023284688A1 (zh) | 基于容器组pod的处理方法及相关系统、存储介质 | |
CN111400016B (zh) | 一种调用应用程序接口函数的方法和设备 | |
CN114168490A (zh) | 确定内存回收阈值的方法及相关设备 | |
CN113342554B (zh) | Io多路复用方法、介质、设备和操作系统 | |
CN116820801A (zh) | Io多路复用机制的优化方法、装置及设备 | |
CN115794317A (zh) | 一种基于虚拟机的处理方法、装置、设备及介质 | |
CN112306718B (zh) | 一种本地设备与异构设备之间的通信方法、系统及相关装置 | |
CN112423117B (zh) | Web端视频播放方法、装置及计算机设备 | |
CN113157452B (zh) | 应用服务请求方法、装置、计算机设备及存储介质 | |
CN110618794A (zh) | 一种SSD固件访问NandFlash的方法和系统 | |
CN110839085A (zh) | 指令管理方法、装置、电子设备及存储介质 | |
CN108255820B (zh) | 分布式系统中数据入库的方法、装置以及电子设备 | |
CN111338577A (zh) | 一种存储系统的多核心线程迁移方法、系统及相关组件 | |
US20210004243A1 (en) | Deserialization method and apparatus, and computing device | |
CN110879747B (zh) | 资源管理方法及装置 | |
CN112817769B (zh) | 游戏资源动态缓存方法、装置、存储介质与电子设备 | |
CN112269720B (zh) | 一种异步状态变更通知方法、系统及装置 | |
CN116347043A (zh) | 一种服务器端异步io的发送方法、终端及存储介质 | |
CN108958926B (zh) | 一种基于达尔文流媒体服务器的虚拟内存池设计方法 | |
CN114531602A (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 |