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); }