Mercurial > hg > nginx
diff src/event/ngx_event_posted.c @ 377:41437e4fd9b4
nginx-0.0.7-2004-07-05-19:08:23 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 05 Jul 2004 15:08:23 +0000 |
parents | d0451e402e27 |
children | 73688d5d7fc3 |
line wrap: on
line diff
--- a/src/event/ngx_event_posted.c Mon Jul 05 06:55:54 2004 +0000 +++ b/src/event/ngx_event_posted.c Mon Jul 05 15:08:23 2004 +0000 @@ -28,27 +28,6 @@ ngx_delete_posted_event(ev); -#if 0 - /* do not check instance ??? */ - - if (ev->accept) { - continue; - } -#endif - - if (ev->closed - || (ev->use_instance && ev->instance != ev->returned_instance)) - { - /* - * the stale event from a file descriptor - * that was just closed in this iteration - */ - - ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, - "stale posted event " PTR_FMT, ev); - continue; - } - ev->event_handler(ev); } } @@ -58,7 +37,30 @@ void ngx_wakeup_worker_thread(ngx_cycle_t *cycle) { - ngx_int_t i; + ngx_int_t i; + ngx_uint_t busy; + ngx_event_t *ev; + +#if 0 + busy = 1; + + if (ngx_mutex_lock(ngx_posted_events_mutex) == NGX_ERROR) { + return; + } + + for (ev = (ngx_event_t *) ngx_posted_events; ev; ev = ev->next) { + if (*(ev->lock) == 0) { + busy = 0; + break; + } + } + + ngx_mutex_unlock(ngx_posted_events_mutex); + + if (busy) { + return; + } +#endif for (i = 0; i < ngx_threads_n; i++) { if (ngx_threads[i].state == NGX_THREAD_FREE) { @@ -97,46 +99,25 @@ ngx_delete_posted_event(ev); - ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0, - "event instance: c:%d i:%d r:%d", - ev->closed, ev->instance, ev->returned_instance); - - if (ev->closed - || (ev->use_instance && ev->instance != ev->returned_instance)) - { - /* - * The stale event from a file descriptor that was just - * closed in this iteration. We use ngx_cycle->log - * because ev->log may be already destoyed. - */ - - ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ngx_cycle->log, 0, - "stale posted event " PTR_FMT, ev); - - ngx_unlock(ev->lock); - - ev = ev->next; - - continue; - } - ev->locked = 1; ev->ready |= ev->posted_ready; ev->timedout |= ev->posted_timedout; - ev->available |= ev->posted_available; ev->pending_eof |= ev->posted_eof; #if (HAVE_KQUEUE) ev->kq_errno |= ev->posted_errno; #endif + if (ev->posted_available) { + ev->available = ev->posted_available; + } ev->posted_ready = 0; ev->posted_timedout = 0; - ev->posted_available = 0; ev->posted_eof = 0; #if (HAVE_KQUEUE) ev->posted_errno = 0; #endif + ev->posted_available = 0; ngx_mutex_unlock(ngx_posted_events_mutex);