Linux网络编程——进程池实现过程详解

Posted mered1th

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux网络编程——进程池实现过程详解相关的知识,希望对你有一定的参考价值。

进程池

父进程的实现流程

1、定义数据结构pChild,申请子进程数目的结构体空间
2、通过循环,socketpair创建全双工管道,创建子进程,将子进程pid,管道对端,是否忙碌等信息存储
3、socket,bind,listen,对应的端口处于监听状态 netstat
4、epoll_create创建epfd,监控socketFd和所有子进程的管道对端
5、while(1)循环 epoll_wait等待客户端的请求及子进程是否有通知
如果socketFd可读,说明是客户端有连接请求,accept对应连接请求,得到new_fd,循环遍历,找到非忙碌的子进程,将new_fd发送给对应子进程,将对应子进程标识为忙碌,然后父进程关闭new_fd。

判断就绪的描述符 是哪个子进程的管道对端,就将对应子进程标识为非忙碌,同时读出管道内数据。

子进程的实现流程

while(1)
{
1、接收任务,得到newFd
2、通过newFd给客户端发送文件
3、关闭newFd
4、通过写管道,通知父进程完成文件下载任务
}

详细代码见下篇。
Linux网络编程——进程池实现过程详解(2)

以上是关于Linux网络编程——进程池实现过程详解的主要内容,如果未能解决你的问题,请参考以下文章

Linux下进程的创建过程分析(_do_fork/do_fork详解)--Linux进程的管理与调度

Linux:详解多线程(线程池读写锁和CAS无锁编程)

Linux下C/C++ 手写一个线程池-

Linux僵尸进程详解

Linux僵尸进程详解

Linux:进程池实现