1for(i =0; i < n; i++) {23ngx_spawn_process(cycle, ngx_worker_process_cycle,4(void*) (intptr_t) i,"worker process", type);56ch.pid =ngx_processes[ngx_process_slot].pid;7ch.slot =ngx_process_slot;8ch.fd = ngx_processes[ngx_process_slot].channel[0];910ngx_pass_open_channe...
ngx_memzero(&ch,sizeof(ngx_channel_t));//传递给其他worker子进程的命令,打开通信管道ch.command =NGX_CMD_OPEN_CHANNEL;/*由master进程按照配置文件中worker进程的数目,启动这些子进程(也就是调用表8-2中的ngx_start_worker_processes方法)。*//*循环创建工作进程 默认ccf->worker_processes=8个进程,根据CP...
ngx_start_worker_processes(ngx_cycle_t *cycle, ngx_int_t n, ngx_int_t type) { ngx_int_t i; ngx_channel_t ch; ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0, "start worker processes"); //传递给其他worker子进程的命令,打开通信管道 ch.command = NGX_CMD_OPEN_CHANNEL; //创建n个wor...
3、调用ngx_start_worker_processes(cycle, ccf->worker_processes, NGX_PROCESS_RESPAWN)启动worker进程; ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module); ngx_start_worker_processes(cycle, ccf->worker_processes, NGX_PROCESS_RESPAWN); 4、调用ngx_start_cache_manager_pr...
示例3: ngx_start_worker_processes ▲点赞 3▼ staticvoidngx_start_worker_processes(ngx_cycle_t*cycle,ngx_int_tn,ngx_int_ttype){ngx_int_ti;ngx_channel_tch;structitimervalitv;ngx_log_error(NGX_LOG_INFO, cycle->log,0,"start worker processes"); ...
ch.pid = ngx_processes[ngx_process_slot].pid; ch.slot = ngx_process_slot; ch.fd = ngx_processes[ngx_process_slot].channel[0];/* 通知其他worker进程和缓存管理进程的通信fd */ngx_pass_open_channel(cycle, &ch);if(loader ==0) {return; ...
#5 0x00005555555b2427 in ngx_start_worker_processes (cycle=0x555555692cb0, n=4, type=-3) at src/os/unix/ngx_process_cycle.c:344 #6 0x00005555555b1c0a in ngx_master_process_cycle (cycle=0x555555692cb0) at src/os/unix/ngx_process_cycle.c:130 ...
ngx_start_worker_processes ... ngx_master_process_exit ... } ngx_start_worker_processes { ... // for i = 0 to n ngx_worker_process_cycle ... } ngx_worker_process_cycle { ... ngx_worker_process_init ... ngx_worker_process_exit ...
(cycle,ccf->worker_processes,NGX_PROCESS_RESPAWN);ngx_start_cache_manager_processes(cycle,0);//启动cache进程ngx_new_binary=0;delay=0;sigio=0;live=1;for(;;){if(delay){if(ngx_sigalrm){//sigalrm为时钟定时信号sigio=0;delay*=2;ngx_sigalrm=0;}ngx_log_debug1(NGX_LOG_DEBUG_EVENT,cycle->...
ngx_master_process_cycle>ngx_start_worker_processes>ngx_worker_process_exit,条件是在出现中断,或者没有时间片的时候退出线程并调用。关键代码如下:static void ngx_worker_process_cycle(ngx_cycle_t *cycle, void *data) { ngx_int_t worker = (intptr_t) data; ngx_process = NGX_PROCESS_WORKER; ...