Chinaunix首页 | 论坛 | 博客
  • 博客访问: 763670
  • 博文数量: 116
  • 博客积分: 923
  • 博客等级: 准尉
  • 技术积分: 1635
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-06 21:43
个人简介

一直帮老板搬运代码!!!

文章分类
文章存档

2013年(47)

2012年(69)

分类: LINUX

2013-01-29 09:50:38

这里只是,大概记录一下:

1、就是一个进程:在main函数的:cycle = cst_init_cycle(&init_cycle); 的时候,好像是里面的那个方法了,把所有connect 设置为read handle为_ini_tcp_session,同时吧监听listent 的端口标识设置为0,同时把listent的readhandle设置为(ngx_worker_process_init(ngx_cycle_t *cycle, ngx_uint_t priority , int ngx_channel) 方法的: if (ngx_modules[i]->init_process(cycle) 设置) epoll的可读事件,以后循环就不再判断和加入该事件了。

2、而多进程,在cst_init_cycle这个里面,不会添加listent的readhandle设置为 epoll的可读事件,而是在init_cycle循环前每次单独添加该事件,让某个进程可以accept

 

另外epoll用法:

epoll 的EPOLLIN 事件“epoll_ctl(epfd, EPOLL_CTL_ADD, fd, &ev);”在客户端发送循环写入事件时,循环触发;而EPOLLOUT事件是,epoll_ctl(epfd, EPOLL_CTL_MOD, cfd, &ev);一次就触发一次。


补充:nginx 开始时 里面每个进程会走一次

  61 2013/01/28 15:12:33 [alert] 3160#0: cst_epollprocess_ 500 === 1
  62 2013/01/28 15:12:35 [info] 3160#0: epoll_wait *17 linsent 0 fd to 3160 pid

确认就是父子进程通信的管道id


阅读(1994) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~