一直帮老板搬运代码!!!
全部博文(116)
分类: 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