diff src/event/modules/ngx_kqueue_module.c @ 371:780e93985b93

nginx-0.0.7-2004-06-28-20:05:02 import
author Igor Sysoev <igor@sysoev.ru>
date Mon, 28 Jun 2004 16:05:02 +0000
parents 54f76b0b8dca
children c9fdfccebc49
line wrap: on
line diff
--- 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_even
             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,13 +460,18 @@ static ngx_int_t ngx_kqueue_process_even
         }
     }
 
-    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;
+
+    } else {
+        lock =0;
     }
 
-    lock = 1;
-
     for (i = 0; i < events; i++) {
 
         ngx_kqueue_dump_event(cycle->log, &event_list[i]);
@@ -588,7 +592,7 @@ static ngx_int_t ngx_kqueue_process_even
 
     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);