zoukankan      html  css  js  c++  java
  • Linux网络编程——进程池实现过程详解(1)

    进程池

    父进程的实现流程

    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)

  • 相关阅读:
    [ZJOI2010]数字计数
    [SCOI2009]windy数
    [Tjoi2018]数学计算
    [ZJOI2008] 骑士
    [CQOI2009] 中位数
    11.7 模拟赛
    10.31 模拟赛
    随机游走
    10.29 模拟赛
    10.28 模拟赛
  • 原文地址:https://www.cnblogs.com/Mered1th/p/10859244.html
Copyright © 2011-2022 走看看