Nginx-处理事件过程
1.多线程
缺点:
线程带来的内存占用非常大;
线程的上下文切换带来的cpu开销很大;
性能就上不去;
开销完全是没有意义的
2.nginx
采用异步非阻塞方式
下面用一段伪代码描述nginx处理事件进程
while (true) {
for t in run_tasks:
t.handler();
update_time(&now);
timeout = ETERNITY;
for t in wait_tasks: /* sorted already */
if (t.time <= now) {
t.timeout_handler();
} else {
timeout = t.time - now;
break;
}
nevents = poll_function(events, timeout);
for i in nevents:
task t;
if (events[i].type == READ) {
t.handler = read_handler;
} else { /* events[i].type == WRITE */
t.handler = write_handler;
}
run_tasks_add(t);
}

浙公网安备 33010602011771号