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

  

posted @ 2018-01-19 14:13  奔跑在study的路上  阅读(234)  评论(0编辑  收藏  举报