Is this thread bug?

feneyer nginx-forum at nginx.us
Wed Feb 22 07:00:11 UTC 2012


hello,everyone:
    I have to use nginx's muti-thread model. Presently, i am using and
modifying it. But i have some problems about nginx's thread processing:
    (1) in funcion "ngx_worker_thread_cycle", there is such codes which
i think is a mistake:
        if (ngx_event_thread_process_posted(cycle) == NGX_ERROR) {
            return (ngx_thread_value_t) 1;
        }

        if (ngx_event_thread_process_posted(cycle) == NGX_ERROR) {
            return (ngx_thread_value_t) 1;
        }
        ==>why call twice?
    (2)in function "ngx_event_expire_timers", lock problem as
followings:
        ngx_mutex_lock(ngx_event_timer_mutex);

        root = ngx_event_timer_rbtree.root;

        if (root == sentinel) {
            return;
        }
        ==>return without call ngx_mutex_unlock?
    (3) in function "ngx_epoll_process_events",lock problem too:
        before the code "call rev->handler(rev);" ,it has call
"ngx_mutex_lock(ngx_posted_events_mutex)",but the handler recursively
call other functions wich may need the lock("ngx_posted_events_mutex")
too,then deadlock happens.
       I just simply modify it as follows:
       ngx_mutex_unlock(ngx_posted_events_mutex); //xxx 
    rev->handler(rev);
        ngx_mutex_lock(ngx_posted_events_mutex); //xxx 
      ===>whether this modifying will bring on other unconspicuous
problems?

    Is there any solutions for nginx’s muti-threads using?Is there any
plan to support muti-threads?about when?
    I am looking forward to your reply.
    Thanks a lot.

Posted at Nginx Forum: http://forum.nginx.org/read.php?2,222829,222829#msg-222829



More information about the nginx mailing list