aboutsummaryrefslogtreecommitdiff
path: root/src/event/modules/ngx_kqueue_module.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-06-28 16:05:02 +0000
committerIgor Sysoev <igor@sysoev.ru>2004-06-28 16:05:02 +0000
commitb14b91020284baf090b40bdb6ba87b99751f27fb (patch)
tree5c0a3b3cd099910a1d9698b6972db858839b3067 /src/event/modules/ngx_kqueue_module.c
parentc02473048cee372cb8644e1f2d566431781074d2 (diff)
downloadnginx-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.c26
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);