本申请提供一种进程间事件的处理方法、装置、设备以及存储介质,所述处理方法,包括:目标子进程在接收到内核返回的第二读就绪事件时,从所述管道套接字中读取到所述建立连接标识,根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接。未采用工作队列加锁的方式,节省了CPU的时间消耗。节省了CPU的时间消耗。节省了CPU的时间消耗。
【技术实现步骤摘要】
一种进程间事件的处理方法、装置、设备以及存储介质
[0001]本申请涉及计算机
,具体而言,涉及一种进程间事件的处理方法、装置、设备以及存储介质。
技术介绍
[0002]现有技术中,父进程负责监听,建立连接和封装http请求对象,将封装好http请求对象添加到共享的工作队列中,子进程负责从工作队列中取出http请求对象,解析http请求数据和构造http响应。
[0003]父进程和子进程共享工作队列,父进程往工作队列中添加http请求对象,以及,子进程从工作队列中取出http请求对象,都需要对工作队列加锁,增加CPU时间的消耗。
技术实现思路
[0004]基于此,提出一种进程间事件的处理方法、装置、设备以及存储介质。
[0005]第一方面,提供了一种进程间事件的处理方法,包括:
[0006]在内核检测到监听套接字中有监听数据时,内核向父进程返回第一读就绪事件,所述监听数据包括客户端请求建立连接的数据,父进程已预先将监听套接字上的第一读就绪事件注册到了父进程对应的epoll内核事件表中;
[0007]父进程在接收到内核返回的第一读就绪事件时,确定目标子进程,向父进程和目标子进程之间的管道中写入建立连接标识;
[0008]在内核检测到目标子进程中的管道套接字中有数据时,内核向所述目标子进程返回第二读就绪事件,目标子进程已预先将第二读就绪事件注册到了目标子进程对应的epoll内核事件表中;
[0009]目标子进程在接收到内核返回的第二读就绪事件时,从所述管道套接字中读取到所述建立连接标识,根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接。
[0010]上述进程间事件的处理方法,首先在内核检测到监听套接字中有监听数据时,内核向父进程返回第一读就绪事件,所述监听数据包括客户端请求建立连接的数据;然后父进程在接收到内核返回的第一读就绪事件时,确定目标子进程,向父进程和目标子进程之间的管道中写入建立连接标识;并且在内核检测到目标子进程中的管道套接字中有数据时,内核向所述目标子进程返回第二读就绪事件;最后目标子进程在接收到内核返回的第二读就绪事件时,从所述管道套接字中读取到所述建立连接标识,根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接。可见,上述进程间事件的处理方法未采用工作队列加锁的方式,节省了CPU的时间消耗,并且,现有技术中,每个子进程在同一时间只能处理一个http请求,如果http请求过多,而子进程又较少,则工作队列中会有较多的http请求得不到及时的处理,从而导致对客户端的响应速度变慢,而上述进程间事件的处理方法,采用了epoll的IO复用技术,一个子进程可以处理多个http请求,同时建立和多个客户
端之间的连接,从而在一定程度上提高了对客户端的响应速度。
[0011]在一个实施例中,在所述根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接之后,还包括:在内核检测到目标子进程中的连接套接字中有数据时,内核向目标子进程返回第三读就绪事件,目标子进程已预先将连接套接字上的第三读就绪事件注册到了目标子进程对应的epoll内核事件表中;目标子进程在接收到内核返回的第三读就绪事件时,从所述连接套接字中读取http请求,构造所述http请求对应的http响应,将所述http响应写入所述连接套接字,以将所述http响应发送给所述客户端。
[0012]上述实施例,子进程负责处理http请求,由于采用了epoll的IO复用技术,子进程可以同时对多个http请求进行处理,构造多个http请求对应的http响应,从而在一定程度上提高了对客户端的响应速度。
[0013]在一个实施例中,在所述根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接之后,还包括:在内核检测到目标子进程中的连接套接字中有数据时,内核向目标子进程返回第三读就绪事件,目标子进程已预先将连接套接字上的第三读就绪事件注册到了目标子进程对应的epoll内核事件表中;目标子进程在接收到内核返回的第三读就绪事件时,从所述连接套接字中读取http请求,构造所述http请求对应的http响应,将所述连接套接字上的写就绪事件注册到目标子进程对应的epoll内核事件表中;在内核检测到写就绪事件时,向所述目标子进程返回所述写就绪事件;目标子进程在接收到内核返回的写就绪事件时,将所述http响应写入所述连接套接字,以将所述http响应发送给所述客户端。
[0014]上述实施例,套接字的缓冲区可能已经写满了,于是,注册写就绪事件到目标子进程对应的epoll内核事件表中,进而,在套接字的缓冲区还未写满的时候,再将http响应写入,在一定程度上防止读写错误。
[0015]在一个实施例中,进程间事件的处理方法,还包括:在目标子进程检测到发生读写错误时,将所述连接套接字的描述符从目标子进程对应的epoll内核事件表中删除,并且,关闭所述连接套接字。
[0016]上述实施例,由于发生了读写错误,因此,将连接套接字的描述符从目标子进程对应的epoll内核事件表中删除,并且,关闭连接套接字,以防止更多读写错误发生,并且,释放资源。
[0017]在一个实施例中,进程间事件的处理方法,还包括:在目标子进程检测到客户端关闭了连接时,将所述连接套接字的描述符从目标子进程对应的epoll内核事件表中删除,并且,关闭所述连接套接字。
[0018]上述实施例,由于客户端关闭了连接,因此,将连接套接字的描述符从目标子进程对应的epoll内核事件表中删除,并且,关闭连接套接字,以防止发生读写错误,并且,释放资源。
[0019]在一个实施例中,在所述在内核检测到监听套接字中有监听数据时,内核向所述父进程返回第一读就绪事件之前,还包括:创建包括多个子进程的进程池,所述多个子进程中包括所述目标子进程;建立父进程和进程池中的每个子进程之间的管道。
[0020]上述实施例,预先创建了进程池,并且建立了父进程和子进程之间的通信管道,以便后续父进程和子进程通信。
[0021]在一个实施例中,进程间事件的处理方法,还包括:若检测到父进程退出,则关闭父进程的全部套接字、子进程的全部套接字、父进程对应的epoll内核事件表和子进程对应的epoll内核事件表。
[0022]上述实施例,父进程退出时,关闭所有的套接字和epoll内核事件表,从而释放资源。
[0023]第二方面,提供了一种进程间事件的处理装置,包括:
[0024]数据监听模块,用于在内核检测到监听套接字中有监听数据时,内核向父进程返回第一读就绪事件,所述监听数据包括客户端请求建立连接的数据,父进程已预先将监听套接字上的第一读就绪事件注册到了父进程对应的epoll内核事件表中;
[0025]第一返回模块,用于父进程在接收到内核返回的第一读就绪事件时,确定目标子进程,向父进程和目标子进程之间的管道中写入建立连接标识;
[0026]第二返回模块,用于在内核检测到目标子进程本文档来自技高网...
【技术保护点】
【技术特征摘要】
1.一种进程间事件的处理方法,其特征在于,包括:在内核检测到监听套接字中有监听数据时,内核向父进程返回第一读就绪事件,所述监听数据包括客户端请求建立连接的数据,父进程已预先将监听套接字上的第一读就绪事件注册到了父进程对应的epoll内核事件表中;父进程在接收到内核返回的第一读就绪事件时,确定目标子进程,向父进程和目标子进程之间的管道中写入建立连接标识;在内核检测到目标子进程中的管道套接字中有数据时,内核向所述目标子进程返回第二读就绪事件,目标子进程已预先将第二读就绪事件注册到了目标子进程对应的epoll内核事件表中;目标子进程在接收到内核返回的第二读就绪事件时,从所述管道套接字中读取到所述建立连接标识,根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接。2.根据权利要求1所述的处理方法,其特征在于,在所述根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接之后,还包括:在内核检测到目标子进程中的连接套接字中有数据时,内核向目标子进程返回第三读就绪事件,目标子进程已预先将连接套接字上的第三读就绪事件注册到了目标子进程对应的epoll内核事件表中;目标子进程在接收到内核返回的第三读就绪事件时,从所述连接套接字中读取http请求,构造所述http请求对应的http响应,将所述http响应写入所述连接套接字,以将所述http响应发送给所述客户端。3.根据权利要求1所述的处理方法,其特征在于,在所述根据所述建立连接标识建立所述目标子进程与所述客户端之间的连接之后,还包括:在内核检测到目标子进程中的连接套接字中有数据时,内核向目标子进程返回第三读就绪事件,目标子进程已预先将连接套接字上的第三读就绪事件注册到了目标子进程对应的epoll内核事件表中;目标子进程在接收到内核返回的第三读就绪事件时,从所述连接套接字中读取http请求,构造所述http请求对应的http响应,将所述连接套接字上的写就绪事件注册到目标子进程对应的epoll内核事件表中;在内核检测到写就绪事件时,向所述目标子进程返回所述写就绪事件;目标子进程在接收到内核返回的写就绪事件时,将所述http响应写入所述连接套接字,以将所述http响应发送给所述客户端。4.根据权利要求2或3任一项所述的处理方法,其特征在于,还包括...
【专利技术属性】
技术研发人员:董叶豪,
申请(专利权)人:北京天融信网络安全技术有限公司北京天融信科技有限公司北京天融信软件有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。