进程池终章--终于可以说自己对进程池了解了。。。
2016-11-03 20:31
274 查看
之前看过进程池,但是理解的不够透彻,这次算是了解了他的全部过程了吧
一篇自己的领悟,可能对大家帮助不大
进程池需要的结构体:
1.子进程结构体
1.1m_pid负责存储子进程特有的pid
1.2管道负责与主进程进行通信
2.进程池结构体
2.1进程池中进程总数
2.2子进程在池中的序号
2.3进程的epoll内核事件表,m_epollfd标识
2.4监听socket
2.5标识子进程是否结束
2.6保存所有子进程的描述信息
2.7进程池静态实例
前面的是子进程和进程池的结构,整个进程池通过信号进行通信,进程池通过存储子进程的pid来记录创建的子进程
说一下关键部分
(1)主进程使用epoll的et模式进行内核事件表的监控
(2)先运行父进程监控,然后运行所有的子进程
(3)如果有客户端连接,那么父进程依照自己的算法选择合适的子进程,当父进程管道传来的id恰好等于当前子进程的文件描述符且有事件可读那么第一次让相应第i个子进程和父进程进行连接,然后把链接所得的socket注册到子进程的事件表里面去,这样子进程就和客户端链接成功并且可以监听客户端的相应状态变化了(子进程的注册表的变化并不会影响到父进程)
一篇自己的领悟,可能对大家帮助不大
进程池需要的结构体:
1.子进程结构体
1.1m_pid负责存储子进程特有的pid
1.2管道负责与主进程进行通信
2.进程池结构体
2.1进程池中进程总数
2.2子进程在池中的序号
2.3进程的epoll内核事件表,m_epollfd标识
2.4监听socket
2.5标识子进程是否结束
2.6保存所有子进程的描述信息
2.7进程池静态实例
前面的是子进程和进程池的结构,整个进程池通过信号进行通信,进程池通过存储子进程的pid来记录创建的子进程
说一下关键部分
(1)主进程使用epoll的et模式进行内核事件表的监控
(2)先运行父进程监控,然后运行所有的子进程
(3)如果有客户端连接,那么父进程依照自己的算法选择合适的子进程,当父进程管道传来的id恰好等于当前子进程的文件描述符且有事件可读那么第一次让相应第i个子进程和父进程进行连接,然后把链接所得的socket注册到子进程的事件表里面去,这样子进程就和客户端链接成功并且可以监听客户端的相应状态变化了(子进程的注册表的变化并不会影响到父进程)
相关文章推荐
- 终于申请一个blog 自己第一个blog 呵呵``
- 【CSS3初探之Media Queries】终于完成了的CSS3,我们来个终章总结!
- 苹果是怎么吃到的?——职业规划,从了解自己开始
- 终于有了自己的域名了
- 今天终于在CSDN有了一个自己的窝了
- 终于用git上传了自己的项目
- ZOJ1586 恩 最小生成树 也不知道怎么 自己的 时间受限 后来终于搞对了 也知道时间受限为什么了 你不停止 当然时间受限啊!!
- 如何了解别人把握自己
- 了解自己
- 了解上司如何看自己
- 谈下自己了解的云计算
- 为了了解Icmp协议,自己写了一个
- 今天终于自己在不看书的情况下完成了排序法的设计
- 终于有了自己的Blog
- DataSet&ListView分页和根据自己需要读取列数据,根据需要排列显示的位置或者可以说是顺序.[winform学习示例]
- 终于有了自己的域名了
- 程序猿应该了解的内容以及程序猿如何强迫自己学习(思考篇)
- 一百个小排终于开启了自己的Linux之旅
- 自己学Docker:4.开始了解Docker的工作模式
- 尝试有关对象指针的使用方法,里面有自己加的知识,更深入了解了