diff options
author | Igor Sysoev <igor@sysoev.ru> | 2004-06-28 16:05:02 +0000 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2004-06-28 16:05:02 +0000 |
commit | b14b91020284baf090b40bdb6ba87b99751f27fb (patch) | |
tree | 5c0a3b3cd099910a1d9698b6972db858839b3067 /src/event/modules/ngx_kqueue_module.c | |
parent | c02473048cee372cb8644e1f2d566431781074d2 (diff) | |
download | nginx-b14b91020284baf090b40bdb6ba87b99751f27fb.tar.gz nginx-b14b91020284baf090b40bdb6ba87b99751f27fb.zip |
nginx-0.0.7-2004-06-28-20:05:02 import
Diffstat (limited to 'src/event/modules/ngx_kqueue_module.c')
-rw-r--r-- | src/event/modules/ngx_kqueue_module.c | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/src/event/modules/ngx_kqueue_module.c b/src/event/modules/ngx_kqueue_module.c index 001d6a85e..99370ac42 100644 --- a/src/event/modules/ngx_kqueue_module.c +++ b/src/event/modules/ngx_kqueue_module.c @@ -361,11 +361,10 @@ static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle) return NGX_ERROR; } - /* - * TODO: if timer is NGX_TIMER_INFINITE and any worker thread - * is still busy then set the configurable 500ms timeout - * to wake up another worker thread - */ + if (timer == NGX_TIMER_INFINITE || timer > 500) { + timer = 500; + break; + } #endif @@ -461,12 +460,17 @@ static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle) } } - if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { - ngx_accept_mutex_unlock(); - return NGX_ERROR; - } + if (events > 0) { + if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { + ngx_accept_mutex_unlock(); + return NGX_ERROR; + } - lock = 1; + lock = 1; + + } else { + lock =0; + } for (i = 0; i < events; i++) { @@ -588,7 +592,7 @@ static ngx_int_t ngx_kqueue_process_events(ngx_cycle_t *cycle) if (ngx_posted_events) { if (ngx_threaded) { - ngx_cv_signal(ngx_posted_events_cv); + ngx_cond_signal(ngx_posted_events_cv); } else { ngx_event_process_posted(cycle); |